Database 请求在Oracle 11g中定义主键的建议

Database 请求在Oracle 11g中定义主键的建议,database,database-design,oracle11g,rdbms,database-schema,Database,Database Design,Oracle11g,Rdbms,Database Schema,全部, 在向你提出问题之前,我会先问你 我有很多其他数据库的编程/管理经验:MySql、MSSQL、PostGres和。我只是对甲骨文没有多少经验 我的任务是设计一些web应用程序和支持数据库表。这些表是使用ER图设计的,并发送给开发组进行实施。当他们发回建议的表创建语句时,我看到了两件我觉得不对的事情。主键是NUMBER(5),序列将MAXVALUE设置为99999 我本以为MAXVALUE会被省略,而NOMAXVALUE主键列应该是NUMBER(*,0)或LONG。由于我在Oracle表设计

全部,

在向你提出问题之前,我会先问你

我有很多其他数据库的编程/管理经验:MySql、MSSQL、PostGres和。我只是对甲骨文没有多少经验

我的任务是设计一些web应用程序和支持数据库表。这些表是使用ER图设计的,并发送给开发组进行实施。当他们发回建议的表创建语句时,我看到了两件我觉得不对的事情。主键是
NUMBER(5)
,序列将
MAXVALUE
设置为99999

我本以为
MAXVALUE
会被省略,而
NOMAXVALUE
主键列应该是
NUMBER(*,0)
LONG
。由于我在Oracle表设计方面没有太多经验,请您提出建议好吗

诚恳

克里斯托弗·霍奇

编辑
感谢您提供有关
LONG
的信息。我会确保使用数字,但我仍然不清楚定义它的最佳方式:
NUMBER
,或
NUMBER(*,0)
,或
NUMBER(9)
,等等。

我同意你的看法:因为列是保存从序列生成的代理键,5位数限制的唯一可能目的是将表中允许的行总数限制在100000以下,这似乎有悖常理。它当然不会带来任何性能或空间效率优势。可能这只是ERD工具的DDL生成器的默认设置


不要使用
LONG
:在Oracle中,这是一种过时且不推荐使用的存储大文本字符串的方法(现在首选CLOB)。

如果是我,我不会指定数字的大小,但这可能比设计目的的好做法更懒惰(设置它,忘记它)


但“长”会带来问题。在Oracle中,“long”是一种不推荐使用的字符数据类型。这与其他语言/系统中数字的长数据类型不同。这很棘手。

在所述表的生命周期中,您希望插入多少行?可能是10行或更多行。它是全球能源公司企业解决方案的一部分。那么肯定
number(5)
不足以作为主键的大小。显然,编写表创建脚本的人不知道数据量。感谢您提供了关于LONG的指针。请告诉我关于主键列数据类型的建议好吗?我可能只选择允许任何数字的数字。或者你可以限制为整数,例如数字(38,0)。这就是我对数字大小的想法。