有三张表,
表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加个散列主键没有任何意义,可说服不了同事,还是我理解问题,请高手指点解惑,多谢!
解决方案 »
- 麻烦高手看下,Oracle分页过程使用java测试怎么出错了?
- 关于字符串转行
- 麻烦帮我写一条SQL语句
- oracle某个数据表把不同字段排序
- 如何去除重复(两个或更多字段相同)数据?
- 怎么让oracle或者SqlServer中的外键约束暂时失效??
- 调用C语言写的EXTERNAL LIBRARY的问题?create or replace function怎么写?Oracle10G
- exp导出表问题,在线等.谢
- 如何在oracle中,输入空值?
- 如何将access中的数据导入oracle数据库
- 刚学到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