create table STYLE
(
SP_STYLE_ID INTEGER not null,
CODE VARCHAR(20) not null,
NAME_ENGLISH VARCHAR(100) not null,
NAME_CHINESE VARCHAR(300),
SP_VALID_STATUS_ID SMALLINT not null,
DELETE_FLAG CHARACTER not null with default 'Y',
CREATOR INTEGER not null,
CREATE_DATE TIMESTAMP not null,
MODIFIER INTEGER,
MODIFY_DATE TIMESTAMP,
CUSTOMER_ID INTEGER,
CUSTOMER_STYLE_NO VARCHAR(50),
SHORT_NAME VARCHAR(100),
SP_GAUGE_ID SMALLINT not null,
SP_GARMENT_ID SMALLINT,
YARN_PL_MR_CREATED CHARACTER not null with default 'N',
constraint SP_STYLE_PK primary key (CODE),
constraint SP_STYLE_IDX0 unique (SP_STYLE_ID)
)
这样的数据库表:code是主键,SP_STYLE_ID唯一性约束(数据库中的表都是这样设计的)
问题一:不知道这样设计有什么好处,我觉得有一个ID就足够了,请高人指点。
表与表之间的外键都是唯一性约束,就像SP_STYLE_ID用来做别的表的外键
问题二:通常都是用表的ID(主键)作为外键来用,而这里的外键不是主键而是唯一约束,这样有何利弊?
在开发中遇到很多问题,就拿对数据库的操作而言:如果用ORM框架来操作数据库那真让人头疼
问题三:不知道这样的数据库该怎么开发,我们是都用做原始的sql语句来呢,还是用什么orm框架来?
请高人给点建议,数据库是有了,这是最难办的事。
(
SP_STYLE_ID INTEGER not null,
CODE VARCHAR(20) not null,
NAME_ENGLISH VARCHAR(100) not null,
NAME_CHINESE VARCHAR(300),
SP_VALID_STATUS_ID SMALLINT not null,
DELETE_FLAG CHARACTER not null with default 'Y',
CREATOR INTEGER not null,
CREATE_DATE TIMESTAMP not null,
MODIFIER INTEGER,
MODIFY_DATE TIMESTAMP,
CUSTOMER_ID INTEGER,
CUSTOMER_STYLE_NO VARCHAR(50),
SHORT_NAME VARCHAR(100),
SP_GAUGE_ID SMALLINT not null,
SP_GARMENT_ID SMALLINT,
YARN_PL_MR_CREATED CHARACTER not null with default 'N',
constraint SP_STYLE_PK primary key (CODE),
constraint SP_STYLE_IDX0 unique (SP_STYLE_ID)
)
这样的数据库表:code是主键,SP_STYLE_ID唯一性约束(数据库中的表都是这样设计的)
问题一:不知道这样设计有什么好处,我觉得有一个ID就足够了,请高人指点。
表与表之间的外键都是唯一性约束,就像SP_STYLE_ID用来做别的表的外键
问题二:通常都是用表的ID(主键)作为外键来用,而这里的外键不是主键而是唯一约束,这样有何利弊?
在开发中遇到很多问题,就拿对数据库的操作而言:如果用ORM框架来操作数据库那真让人头疼
问题三:不知道这样的数据库该怎么开发,我们是都用做原始的sql语句来呢,还是用什么orm框架来?
请高人给点建议,数据库是有了,这是最难办的事。
应当是SP_STYLE_ID是PK,CODE unique言归正传,之所以有两个唯一的字段,主要是因为:CODE是业务相关的,“可能”被修改,当然,在修改时需要保证不重复。而ID是业务无关的,只代表某条记录的“物理”位置,无论业务今后怎么修改,只要这张表还在,用这个ID就能找到这条记录。比如,一个管理全国人口的数据库,A表存放的是个人信息,B表存放的是每个人的犯罪记录。一对多关系。
可能有人想当然按照身份证做主键。身份证固然不会重复。但是,当身份证可能换代,假设使用了身份证,就需要把所有A表的主键以及B表中的引用字段进行更新,工作量浩大,而且易错。而使用ID(自增长,或者通过sequence或其他方式取得)就不会由此问题。
不知道仁兄对这样的数据库怎么样改造?在保证数据不重复的前提下,让我们对数据库有更好的操作,特别是ORM操作。请指点。