Questions tagged «naming-convention»

19
在表名中添加'tbl'前缀真的有问题吗?
我正在观看Brent Ozar的一些视频(例如,像这样的视频),他建议不要在表前添加‘tbl’或‘TBL’。 在互联网上,我发现一些博客说它没有为文档添加任何内容,而且“读取它需要更长的时间”。 问题与考虑 这真的有问题吗?因为自从我的第一份dba工作以来,我就在表的前面加上“ tbl”(高级DBA告诉我要对组织进行此操作)。 这是我需要摆脱的东西吗?我进行了一些测试,复制了一个很大的表并为其赋予了'tbl'前缀,而其他表则保留了该表,并且我没有发现任何性能问题。

10
人们为什么建议不要在标识列中使用名称“ Id”?
我被教导不要在Id表的标识列中使用该名称,但是最近我还是一直在使用它,因为它简单,简短并且对数据的真实性具有很强的描述性。 我见过有人建议Id给表名加上前缀,但这似乎对编写SQL查询的人(或者如果您使用的是诸如Entity Framework的ORM,则是程序员)做更多的工作,尤其是在较长的表名上,例如CustomerProductId要么AgencyGroupAssignementId 我们雇用了一个第三方供应商来为我们创建一些产品,实际上Ident是为了避免使用,而将其所有标识列都命名为Id。最初,我以为他们这样做是因为它Id是一个关键字,但是当我查看它时,发现它Id不是SQL Server 2005中的关键字,这就是我们正在使用的关键字。 那么为什么人们建议不要在Id标识列中使用该名称? 编辑:为澄清起见,我不是在问要使用哪种命名约定,也不是要在参数中使用一种命名约定。我只想知道为什么建议不要将其Id用于标识列名称。 我是一个程序员,而不是dba,对我而言,数据库只是存储我的数据的地方。由于我通常构建小型应用程序,并且通常使用ORM进行数据访问,因此使用Identity字段的通用字段名称要容易得多。我想知道这样做会导致我错过什么,以及是否有确凿的理由让我不这样做。



8
是否有理由使用极端缩写的表名?
我们正在使用供应商的应用程序中的数据库设置,很难读取数据库表名称,也没有关于存储位置的文档。我可以看到为什么要在专有应用程序中混淆其表结构,但是此应用程序(企业资源计划)的卖点之一是它的可定制性。 表名称就像aptrx(应付帐款交易)和apmaster_all(奇怪的是,这是供应商表)。这是一个非常复杂的数据库,所以我想知道该约定是否有任何逻辑,或者是否只是有意地对其进行了混淆。 据我所知,表名的长度不会明显影响性能,对吗?数据库非常复杂(数百个表),因此排序是有意义的,但是我无法想象为什么AccountsPayableTransactions不如aptrx更好。

5
表别名是不好的做法吗?
我记得在DBMS课程中为信息服务硕士课程的学生学习过这一点。为了节省输入时间,您可以输入: SELECT t1.id, t2.stuff FROM someTable t1 INNER JOIN otherTable t2 ON t1.id=t2.id ; 但是...为什么在存储过程之类中可以接受?似乎这样做只会损害语句的可读性,同时又节省了很少的时间。有任何功能或逻辑上的理由要这样做吗?似乎增加了歧义而不是消除了歧义。我看到使用这种格式的唯一可以接受的原因是,如果要添加一个语义上有意义的别名(例如,FROM someTable idsTable当表名的描述性不足时)。 表别名是不好的做法还是只是滥用有用的系统?

5
命名表和视图时应遵循什么标准?
命名表和视图时应遵循什么标准?例如,将tbl_之类的东西放在表名的开头是个好主意吗?是否应该以ct_,lut_或codes_之类的方式指定代码/查找表?还有其他的做/不做的事情吗? 我使用的是MS SQL Server,并且有许多数据库和许多表,因此最好将我们作为标准并带有一些支持性的理由使用。

3
列名命名约定和最佳实践
在列命名方面,我想对最佳做法提出一些专家意见。 背景是根据Wikipedia的以下语法, SELECT ... FROM Employees JOIN Timesheets USING (EmployeeID); 比 SELECT ... FROM Employees JOIN Timesheets ON (Employees.EmployeeID = Timesheets.EmployeeID); 但是,该JOIN ... USING语法仅适用于所有具有全局唯一名称的主键列。因此,我想知道这是否被认为是正确的做法。 我个人经常使用PK列id和外键列创建表othertable_id。但是那样就无法使用USING或NATURAL JOIN。 任何与设计风格或表设计最佳实践指南的链接也将不胜感激!

1
使用USING子句命名函数参数和JOIN结果之间的冲突
鉴于当前Postgres 9.4中的设置(来自此相关问题): CREATE TABLE foo (ts, foo) AS VALUES (1, 'A') -- int, text , (7, 'B'); CREATE TABLE bar (ts, bar) AS VALUES (3, 'C') , (5, 'D') , (9, 'E'); 上一个问题还有一个SQL Fiddle。 我写了SELECT一个FULL JOIN以实现所引用问题的目的。简化: SELECT ts, f.foo, b.bar FROM foo f FULL JOIN bar b USING (ts); 根据规范,解决列的正确方法ts是不使用表限定。任一的输入值(f.ts或b.ts)可以是NULL。该USING子句会产生一些奇怪的情况:引入输入中实际上不存在的“输入”列。到目前为止,一切都很优雅。 …

2
官方PostgreSQL大写约定[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 是否有关于DB,表和字段名中大写字母的正式PostreSQL约定? 将在官方网站上的例子表明一个小写字母和_单词的分离,我不知道这个策略是否正式。 CREATE TABLE films ( code char(5) CONSTRAINT firstkey PRIMARY KEY, title varchar(40) NOT NULL, did integer NOT NULL, date_prod date, kind varchar(10), len interval hour to minute );

1
SQL Server 2016中的表命名约定和策略管理问题
在SQL Server 2012中,我有一个策略设置为不允许表名中包含空格。但是,当我在SQL Server 2016中使用相同的策略时,出现错误。 这是条件的代码: DECLARE @condition_id INT EXEC msdb.dbo.sp_syspolicy_add_condition @name=N'No Spaces', @description=N'No spaces in table names.', @facet=N'IMultipartNameFacet', @expression=N'<Operator> <TypeClass>Bool</TypeClass> <OpType>NOT_LIKE</OpType> <Count>2</Count> <Attribute> <TypeClass>String</TypeClass> <Name>Name</Name> </Attribute> <Constant> <TypeClass>String</TypeClass> <ObjType>System.String</ObjType> <Value>% %</Value> </Constant> </Operator>', @is_name_condition=4, @obj_name=N'% %', @condition_id=@condition_id OUTPUT SELECT @condition_id 这是该策略的代码: DECLARE @object_set_id INT EXEC msdb.dbo.sp_syspolicy_add_object_set @object_set_name=N'Table Names_ObjectSet', @facet=N'IMultipartNameFacet', …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.