如何存储号码的接入列,然后一些有意义的字符串,每个值相关联?
因为我不希望看到原始数字时,我可以一劳永逸定义每个值的含义,并在数据表视图中显示的含义,如:
ID Name Type
1 Jack 1 (Friend)
2 Jill 1 (Friend)
3 Diago 2 (Enemy)
4 Sally 3 (Colleague)
如何存储号码的接入列,然后一些有意义的字符串,每个值相关联?
因为我不希望看到原始数字时,我可以一劳永逸定义每个值的含义,并在数据表视图中显示的含义,如:
ID Name Type
1 Jack 1 (Friend)
2 Jill 1 (Friend)
3 Diago 2 (Enemy)
4 Sally 3 (Colleague)
你可能需要至少两个不同的表。 一个具有ID和人民的名称,并与他们是如何与这个人的类型,并描述另一个表。
如果一个人可以有一个以上的关系(例如朋友和同事),你就必须有对人的ID和关系类型的ID另一列一列的第三个表。 如果一个人永远只能有一种类型的关系,他们你可以简单地第三列添加到您的个人表型的人他们的ID。
为了让数据出表,你可以使用联接在SQL语句中一起由您为每个指定的ID加入所有表的行。
在一般情况下, 这里有一个链接来描述什么样的关系数据库的全部意义。 这里有一个微软办公室联系 ,讨论有关创建使用访问主键和外键约束的表可能会帮助你之间的关系。 这里还有一个用一步一步的指示和相当相关的实例(学生成绩)。
为什么要用魔术号码类型? 为什么不使用的话?
解决方案1 - 只是使用的话,从来不使用的幻数。
解决方案2 - 提供的是一个神奇的数字映射到一个字一个表,并使用连接。
那么,在你的查询,你将需要与定义为你神奇数字的字符串值,另一个表联接:
SELECT ID, Name, Type_Text AS Type
FROM MyTable
INNER JOIN MyLookupTable
ON MyTable.Type = MyLookupTable.Type
我认为你正在寻找的SWITCH
功能...
SELECT Name,
SWITCH(Type=1, "Friend", Type=2, "Enemy", Type=3, "Colleague") as Expr1
FROM MyTable
更多信息
听起来好像是你需要创建另一个表
ISO 5218的性别代码 。
人数不多(只有四种可能的值)。 被认为是稳定的(一个新的性的机会并不多被发现的,以及为什么改变标准?)因此,一个SWITCH()
语句将是适当的:
SELECT SWITCH(
C1.sex_code = 9, 'corporate body',
C1.sex_code = 1, 'male',
C1.sex_code = 2, 'female',
TRUE, '(not known)'
) AS customer_person_type, ...
FROM Customers AS C1 ...
ISO 4217货币代码 。
比较大的数量(约175)。 被认为是在不断变化(一个线索是,它负责维护的官方机构)。 因此,这些将是最合适的基表:
CREATE TABLE Currencies
(
currency_code CHAR(3) NOT NULL,
CHECK (currency_code NOT ALIKE '%[!A-Z]%'),
currency_name VARCHAR(30) NOT NULL
);
INSERT INTO Currencies VALUES ('AED', 'United Arab Emirates dirham');
INSERT INTO Currencies VALUES ('AFN', 'Afghani');
INSERT INTO Currencies VALUES ('ALL', 'Lek');
INSERT INTO Currencies VALUES ...
因此,这是最适合你:性别或货币? ;)