作者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://www.ptt.cc/bbs/Database/M.1443798994.A.95B.html
→ king08: 兩個設計都對,一個業務邏輯,一個自增序號 10/03 09:42
→ kattte: 2較好, 如果幣別跟對應帳號要一直擴增 你的1就麻煩了 10/04 17:20
→ kattte: 好像不太對 你的公司id跟幣別還有對應的銀行與帳號全都塞 10/04 17:24
→ kattte: 在同一個table裡喔? 10/04 17:24
→ kattte: 我沒搞清楚就回答 請無視我 @@ 10/04 17:32
推 PttTime: 不知有無錯:PK(company_id, bank_no, bank_acct), dollar 10/06 00:33