gpt4 book ai didi

sql - 一个查找表还是多个查找表?

转载 作者:行者123 更新时间:2023-12-02 09:45:46 25 4
gpt4 key购买 nike

我需要保存基本成员(member)数据以及附加属性,例如性别、教育、职业、婚姻状况、高度、居住状况等。

我有大约 15-18 个查找表,全部都有(id、名称、值),所有属性都有字符串值。

我可以创建成员(member)表吗tbl_members以及针对上述每个属性的单独 15-18 个查找表:

tbl_members:

mem_Id
mem_email
mem_password
Gender_Id
education_Id
profession_id
marital_status_Id
height_Id
residency_status_Id

或者我应该只创建一个查找表tbl_Attributestbl_Attribute_Types

tbl_Attributes:

att_Id
att_Value
att_Type_Id

示例数据:

001 - Male - 001
002 - Female - 001
003 - Graduate - 002
004 - Masters - 002
005 - Engineer - 003
006 - Designer - 003

tbl_Attribute_Types:

att_type_Id
att_type_name

示例数据:

001 - Gender
002 - Education
003 - Profession

要填充查找下拉列表,我可以选择如下内容:

SELECT A.att_id, A.att_value, AT.att_type_name
FROM tbl_Attributes A
INNER JOIN tbl_Attribute_Types AT ON AT.att_type_Id = A.att_type_Id
WHERE att_Type_Id = @att_Type_Id

和一个附加表 tbl_mem_att_value保存成员的属性和值

tbl_mem_att_value:

mem_id
att_id

member_id 001 的示例数据,男性,硕士,工程师

001 - 001
001 - 004
001 - 005

所以我的问题是我应该选择一个查找表还是多个查找表?

谢谢

最佳答案

永远不要使用一个查找表来处理所有事情。这将使查找内容变得更加困难,并且可能需要在每个查询中加入多次,这意味着它可能会导致锁定和阻塞问题。此外,在一张表中,您无法使用良好的设计来确保描述符的数据类型正确。例如,假设您想要查找两个字符的州缩写。如果您使用适合所有表的统一尺寸,那么它必须足够宽以容纳任何查找的最大可能值,并且您将失去它因太长而拒绝不正确条目的可能性。这是以后数据完整性问题的保证。
此外,您无法正确使用外键来确保数据输入仅限于正确的值。这也会导致数据完整性问题。

除了几分钟的开发时间(可能是设计数据库时最不重要的问题)之外,使用一张表没有任何好处。有很多负面因素。

关于sql - 一个查找表还是多个查找表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27573837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com