有三张表,
表A结构如下(menucode是主键)
menucode menuname ......表B结构如下(rolecode是主键)
rolecode rolename .......表C是中间表,我倾向于如下设计(组合键)
menucode rolecode而同事设计的表C的结构如下
ID(序列主键) menudode rolecode请问表C那种设计更合理些,好,好在哪里?不好的又哪里不好呢?!很纠结,个人感觉中间表C加个散列主键没有任何意义,可说服不了同事,还是我理解问题,请高手指点解惑,多谢!
表A结构如下(menucode是主键)
menucode menuname ......表B结构如下(rolecode是主键)
rolecode rolename .......表C是中间表,我倾向于如下设计(组合键)
menucode rolecode而同事设计的表C的结构如下
ID(序列主键) menudode rolecode请问表C那种设计更合理些,好,好在哪里?不好的又哪里不好呢?!很纠结,个人感觉中间表C加个散列主键没有任何意义,可说服不了同事,还是我理解问题,请高手指点解惑,多谢!
解决方案 »
- 如何知道一个sql 打开了多少个cursor
- oracle中job的用法
- emca -config dbcontrol db -repos create后OEM提示:无法连接到数据库实例。在线等。
- 请高手帮忙,不会写啊
- 怎样结合这两句SQL?
- 求向oracle数据库中加入一个日期类型的数据.
- oracle中怎样得到某表某列的默认值
- 求一SQL语句?
- function,procedure,package有什么共同点?各在什么方面有优势?
- 请大家自觉遵守csdn的制度,防止倒分这样的事情发生。
- 刚学到oracle回滚段这块,问下如何 查看回滚段名称及大小?
- 从excel中导入数据问什么总有空格出现?
--
--组合键很有必要,
--比如某大学数据库中有三张表:
--student:stu_id(pk),stu_name,stu_addr,...
--course:c_id(pk),c_name,c_no,c_description,...
--achievement:stu_id,c_id,grade,...pk(stu_id,c_id),...
--achievement表中使用了联合主键,
--我们都知道,检索海量信息,如果不根据主键,唯一键,索引键来检索的话,你的查询速度将会非常慢。--根据学生id号查询成绩,如果成绩表中没有将stu_id设为主键,那么查询速度会慢一些:
--我们都知道一般的表都是堆表,堆表中的数据是任意放置的,没有规律,
--数据块中那里有空间,新添加的数据就放在那里,查询这样杂乱无章的数据,不慢才怪。--当你为表添加主键,oracle就会为这个主键建立索引,为你将来检索数据提高速度:
SQL> create table test_pri(a number(1), b number(1));
--1.创建主键,则自动创建同名唯一索引
--1.1创建主键,主键约束和唯一索引同时创建
SQL> alter table test_pri add constraint pk_test_pri_a primary key(a);
SQL> select CONSTRAINT_NAME, TABLE_NAME, INDEX_NAME
2 from user_constraints where table_name = 'TEST_PRI';
CONSTRAINT_NAME TABLE_NAME INDEX_NAME
----------------- ------------ -------------
PK_TEST_PRI_A TEST_PRI PK_TEST_PRI_A
SQL> select INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS
2 from user_indexes where table_name = 'TEST_PRI';
INDEX_NAME INDEX_TYPE TABLE_NAME UNIQUENES
---------------- ------------ ------------ ---------
PK_TEST_PRI_A NORMAL TEST_PRI UNIQUE