Ple*_*rds 2 database delphi indexing database-design
我正在开发一个大数据库,从这种情况来看,我决定至少考虑两次关于表格和字段布局的决策.我最关心的是主键.
我几乎总是使用table name加号_id来命名这些索引.我这样做是因为在连接表时我不必担心重复的字段名称,因为Delphi数据库组件给我们的字段table_name.field_name只是字段.
另一方面,如果我们可以为每个表使用相同的ID字段名称,那么创建一个函数来处理与该索引控件有关的每个表总是更容易.
有没有人在选择其中一个数据库设计时遇到过错误?在每个字段名称上重复表名称是一种好方法吗?
Haz*_*zit 22
我过去设计了许多数据库,并且错误地不一致地命名表和列.我知道其他人有不同的意见,但这些是我现在遵循的规则:
表名是复数
对我而言,拥有一个products表而不是一个product表是很自然的,特别是在选择语法时:SELECT whatever FROM products感觉比SELECT whatever FROM product.最后,如果您选择单数或复数,则无关紧要,只要您不混合它们即可.
字段名称是单数
再次,这是一个或多或少任意选择,但它似乎很自然,是大多数人使用的.(你可以说这SELECT descriptions FROM products更有意义,但嘿,你不能争论什么)
所有名称都是小写,并使用下划线来分隔单词
有些人使用Pascal样式大写,ProductId甚至是JavaScript样式productId.我个人曾经使用过许多不同的数据库引擎,说实话,我不能不记得哪些是区分大小写的,哪些不是.table_name似乎被普遍接受,我从来没有遇到任何问题.由于您专门为Delphi应用程序设计数据库,因此您可能希望选择Pascal样式,以便源代码不会混合使用不同的样式.我个人只是坚持field_name.(顺便说一下:即使某些数据库允许使用标识符中的特殊字符,我也会像瘟疫一样避免使用它们,对于可能是数据库关键字的列名也是如此.即使我为表制造商设计了数据库,我也会永远不要将产品表命名为"表格")
主键和外键包括表名
.products表获取product_id主键.无论其他表链接到哪个都获得product_id外键.这会自动记录数据库设计的一部分,并允许使用自然连接.我确实在过去设计了一个数据库,每个表都有一个标记为"id"的主键.那确实非常混乱.
其他列没有得到它们的表名前缀
这可能是这个列表中的规则我偶尔会打破,但首先要做的事情.按照这个规则,产品的描述将进入一个description领域,而不是进入product_description.造成这种情况的主要原因是代码中的混乱程度较低.查询变得更短,更易于阅读.SELECT product_id, description, price FROM products WHERE price>1 AND price<9比阅读更容易阅读SELECT product_id, product_description, product_price FROM products WHERE product_price>1 AND product_price<9.两个查询都会做同样的事情,但是一个查询比另一个更多.有时我违反这条规则有三个原因:
一个.对于主键.请参阅#4 - 能够看到哪些列是什么不是混乱的主键,但重要的是每次都写下来.
湾 当两个完全不同的值类型将共享相同的标识符时:一个人的名称与产品名称完全不同.在开发的某些方面,它使得能够更轻松地区分a person_name和a product_name而无需交付大量元数据.(或者,就此而言,在人和name产品之间brand_name,这消除了对表前缀的需要.)
C.如果两个包含相同字段名称的表可能经常在查询中连接.如果您有产品description和订单description,则可能需要重新命名查询的列,这可能很麻烦.
同样,以上所有都是个人偏好.你的旅费可能会改变.唯一似乎普遍认同的是:选择一种风格并坚持下去.
PS我可能没有回答你的部分问题,但"......创建一个函数来处理与索引控件相关的每个表总是更容易." 对我毫无意义.
| 归档时间: |
|
| 查看次数: |
13430 次 |
| 最近记录: |