【问题标题】:I was wondering if I have the right data type for these databases I have to create我想知道我是否有我必须创建的这些数据库的正确数据类型
【发布时间】:2017-02-26 14:05:30
【问题描述】:

佣金分类列应该能够存储最大为 99 的整数并命名为 comm_id。如果在添加行时未提供值,则 Comm_id 列的值应自动设置为值 10。福利代码列还应容纳最大为 99 的整数值并命名为 ben_id。

必须创建一个新表 commrate 来存储佣金率表,并且必须包含以下列:

comm_id:类似于添加到 ACCTMANAGER 表中的数字列

Comm_rank:可以存储坦克名称的字符字段,最多允许 15 个字符

Rate:可以存储两位十进制数字的数字字段(例如 .01 或 .03

必须创建一个新表,福利,以存储可用的福利计划选项,并且必须包含以下列:

ben_id:类似于添加到 acctmanager 表中的数字列

ben_plan:可以存储单个字符值的字符域

ben_provider:可以存储三位整数的数字字段

active: 一个可以保存 Y 或 N 值的字符域

我的 oracle 代码是

因为第一个表是 acctmanager

alter table ACCTMANAGER
add ( Comm_id number(2) default 10,
      Ben_id number(2) 
);

我选择数字的原因是因为它想要一个最大值为 99

第二张桌子

create table COMMRATE
( Comm_id number(2) default 10,
  Comm_rank varchar2(15),
  Rate number(0,2) 
);

我认为这是对的,但我遇到的问题是 comm_rank,因为我可以选择 varchar2 或 char,但我更喜欢 varchar2

第三张福利表

create table BENEFITS 
( Ben_id number(2),
  Ben_plan char(1),
  Ben_provider number(3),
  Active varchar2(1)
);

活动的最后一列,我选择 varchar2,但我认为最好选择 char,因为它只是一个可以保存 Y 或 N 值的字符。或者我应该选择 char?

【问题讨论】:

  • 如果这只是Oracle,那么这应该是这里唯一的标签。
  • 天哪,您使用的是哪个 DBMS?您已经标记了它们,但它们并不相同。但是,在您标记的所有 3 个中,您应该放弃使用 Y 或 N 的想法。将其更改为位数据类型并将列命名为 IsActive。尽管这个问题过于宽泛且完全基于意见,但无论您如何分割它。因此,至少有两个原因,它离题了。
  • varcharchar 在性能或存储要求方面绝对没有差异。我个人更喜欢 number(1)(带有检查约束)作为穷人的解决方法,而不是 Oracle 中缺少的 boolean 数据类型(我尽量避免像 Y 或 N 这样的本地化值)
  • comm_id 应该是commrate 中的PK(主键)和acctmanager 中的FK(外键),引用commrate。与ben_rate 类似。然后,如果您有数字应该是整数和非负数的要求,则应该在commratebenefits 中强制执行。 active 列应该有一个检查约束,以强制该值为YN(或为0 或1),无论您做出何种选择。您还需要决定它是否应该有一个 NOT NULL 约束。
  • 另外,comm_idacctmanager 中有一个默认值是有意义的,但在commrate 中有一个默认值是没有意义的。

标签: database oracle oracle11g


【解决方案1】:

为了提供上下文,这个问题来自 Joan Casteel 的文本 Oracle 12c: SQL

问题来自第 3 章,尚未涵盖约束的概念。约束在第 4 章中介绍。

对于第二张桌子,我得到了:

CREATE TABLE commrate
( comm_id NUMBER(2) DEFAULT 10,
  comm_rank VARCHAR2(15),
  rate NUMBER(2,2) );

唯一的区别是“rate NUMBER(2,2)”中从 0 变为 2,因为语法 NUMBER(p,s)...p 表示小数位。

.01 到 .99 的小数点右侧有 2 位。

我觉得……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    相关资源
    最近更新 更多