所有
在向我提出问题之前,我have read several other posts。我对其他数据库有很多编程/管理经验:MySql,MSSQL,PostGres和one which will not be named。我对Oracle没有多少经验。
我的任务是设计一些Web应用程序并支持数据库表。这些表是使用ER图设计的,并发送到开发组进行实施。当他们发回建议的表创建语句时,我看到了两件对我来说似乎不对的事情。主键为NUMBER(5)
,序列将MAXVALUE
设置为99999。
我原本希望省略MAXVALUE
以支持NOMAXVALUE
主键列为NUMBER(*,0)
或LONG
。由于我对Oracle桌面设计没有太多经验,请您提出建议吗?
此致
Kristofer Hoch
修改
感谢您提供有关LONG
的信息。我会确保使用NUMBER,但我仍然不清楚定义它的最佳方式:NUMBER
,NUMBER(*,0)
或NUMBER(9)
等。
答案 0 :(得分:1)
我同意你的观点:由于该列是为了保存从序列生成的代理键,因此5位数限制的唯一可能目的是将表中允许的总行数限制在100,000以下 - 其中似乎有悖常理。它当然不会赋予任何性能或空间效率优势。可能它只是他们的ERD工具的DDL生成器的默认值。
不要在Oracle中使用LONG
:这是一种过时的,不推荐使用的存储大文本字符串的方式(现在首选CLOB)。
答案 1 :(得分:1)
如果是我,我不会指定数字的大小,但这可能比设计目的的良好做法更懒惰(设置,忘记它)。
但“长”会导致问题。在Oracle中,“long”是不推荐使用的字符数据类型。它与其他语言/系统中的数字的长数据类型不同。这很棘手。