作者sankight (s.k)
看板Database
标题[SQL ] 想问一下有关primary key设计的问题
时间Fri Oct 2 23:16:31 2015
(针对
SQL 语言的问题,用这个标题。请用 Ctrl+Y 砍掉这行)
资料库名称:SYBASE
资料库版本:15.0
内容/问题描述:
因为没有修过资料库相关基础课程,只在工作上使用,
最近碰到一个问题,想问一下各位先进的意见。
有一个table 结构大概长这样
company_id char(7) Key
dollar_code char(1) Key
bank_no char(4)
bank_acct char(20)
用途是纪录各个公司的银行帐户,分台币与外币每个币别各一个银行帐户,
收到一个修改需求,希望每个公司,每个币别允许多一个银行帐户,当然
各币别帐户不可duplicate.
原有table结构不足,因此须修改。
先修改成这样
Table schema1
company_id char(7) Key
dollar_code char(1) Key
seq_no int Key <--增加
bank_no char(4)
bank_acct char(20)
最简单的做法,增加一个seq_no,所以每公司,每币别可指定多个银行帐户,
当然此结构有可能银行帐户会Duplicate,
但被要求修改成
Table schema2
company_id char(7) Key
dollar_code char(1) Key
bank_no char(4) Key
bank_acct char(20) Key
每公司,每币别同样可指定多个银行帐户,也不会Duplicate,
但使用上就没有那麽方便。
EX:
1.例如说每公司,每币别如果可指定n个银行帐户,但table中每公司,每币别资料可能不满n个,使用SQL於Query时补足n笔就不太容易,大概只能使用Cursor硬写。
2.使用SQL update时,须记住原本的bank_no与bank_acct才能update
但以上两点使用Table schema1就很容易做到。
想问一下各位先进的想法,或是我有那些想法是错误的,还请各位指正。
或是有更好更方便的Table schema设计。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.225.13.182
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1443798994.A.95B.html
1F:→ king08: 两个设计都对,一个业务逻辑,一个自增序号 10/03 09:42
2F:→ kattte: 2较好, 如果币别跟对应帐号要一直扩增 你的1就麻烦了 10/04 17:20
3F:→ kattte: 好像不太对 你的公司id跟币别还有对应的银行与帐号全都塞 10/04 17:24
4F:→ kattte: 在同一个table里喔? 10/04 17:24
5F:→ kattte: 我没搞清楚就回答 请无视我 @@ 10/04 17:32
6F:推 PttTime: 不知有无错:PK(company_id, bank_no, bank_acct), dollar 10/06 00:33