我正在使用sql server 2008。 我们有一个表,用于存储有关使用我们的应用程序的客户端的信息。 它的简化版本如下所示:
--------------------------------------------------------------------------------------------
| ClientName | Address1 | Address2 | PostalCode | ClientFullName | ClientNameAbbreviated |
--------------------------------------------------------------------------------------------
| Name | 111 Street | 222 Ave | A1A 1A1 | Full Name | FN |
--------------------------------------------------------------------------------------------
此表包含数据,以便报告和常规应用信息可以抓取数据而不是 将它硬编码为值或变量。该表只有一行。
我正考虑将此表格转换为以下格式,以便于阅读。 此表仅用于在应用程序开头填充类,然后该类用于检索整个程序中的信息。当客户端需要更多,更少或不同的信息而不是结构更改时,以下格式将允许更改为插入,删除和更新。由于此表中只有一行,因此除了可能增加字段长度外,它永远不需要进行结构更改。
-----------------------------------------------
| ID | Value |
-----------------------------------------------
| ClientName | Company Name |
| Address1 | 111 Street |
| Address2 | 222 Ave |
| PostalCode | A1A 1A1 |
| ClientFullName | Full Company Name |
| ClientNameAbbrevation | CN |
-----------------------------------------------
我想知道数据库设计的优缺点是什么,如果有任何不成文的数据库设计黄金规则,我打算实施这个设计?
- EDIT -------------------------------------------- ---------------------------
感谢您的评论到目前为止。
答案 0 :(得分:0)
当需要的结构变化时,您使用名称/值对。例如,您存储产品,50%具有材料组合,2%具有CPU类型,3%具有rpm,20%具有能量等级。您可以使用genric方法,而不是构建可能有一千个这样的属性的表。但是你需要付出代价:dbms不知道你的内容,也无法帮助你确保完整性。
在您的情况下,如果没有dbms的帮助,您就不需要这么做了。所以不要这样做。保持你的表原样,让dbms知道什么是字符串,数字,日期,什么是强制性的,什么是可选的,什么必须是有效的国家ISO代码或正好13个字符的字符串,以便它可以确保正确性。