2013-05-06 23 views
2

我有4個表或實體:如何使表中的字段定製爲最終用戶

  1. 客戶

  2. 項目

  3. 聯繫

  4. 交易

我喜歡有一個名爲CODE每個表一個單獨的字段。該字段將存儲每個表的系統生成的代碼。但是這個系統生成的代碼必須由最終用戶定製。最終用戶必須根據自己的判斷選擇自己的代碼。

我該如何做到這一點?任何線索?

+0

我不知道,如果我們可以使用元數據在我們的數據庫來實現這個解決方案。可能嗎? – 2013-05-06 11:10:10

+0

那麼,你說客戶表中有一個字段(比方說)客戶碼,和項目表中有一個字段(比方說)項目碼,而這些都是聯合國的相互關係? 您是否有一個表(稱爲ITEM_CODE),其中存儲了可以分配給ITEM表中的記錄的所有允許的代碼? – 2013-05-06 14:50:50

回答

1

如果您想要一個用戶可分配的代碼標識符,請將它與您的ID主鍵字段分開,並將其添加爲&。

這爲您提供了構建應用程序的可靠「內部標識符」,同時保留了業務分配一些「業務標識符」的能力。

加入整數ID「內部標識符」也比VARCHAR更有效率,這是您需要爲「業務標識符」提供靈活性所需的。

create table CUSTOMER (
    ID   integer not null, 
    CODE  varchar(32), 
    -- other fields 
    primary key (ID) 
); 

說實話,你可能無法決定企業願意怎樣分配碼 - 所以試圖用代碼作爲主鍵會使它不可能爲你的應用將行添加到表,因爲分配這些規則的規則太複雜/未知/不能委託給應用程序中的代碼。

真的,CODEs應該由企業來決定 - 不是爲了嘗試&第二次猜測,這隻會導致你的錯誤。 PROD001,PROD002聽起來不錯..但是他們會決定改變系統以適應不同類別的產品。 你將永遠無法正確猜出PAPERPROD0084/12/A,其業務將決定什麼是正確的,所以你將不可避免地最終被錯。

而且,這可以讓你建立一個真正的應用程序,而企業劃傷它的頭&浪費時間搞清楚「業務ID」系統是如何工作 - 或者改變它的想法。

最後一個提示:允許CODE爲空,以便人們可以稍後填寫它。最好讓它空白而不是不正確。

+1

我知道,我們無法猜測用戶需要什麼樣的CODE字段。但在一天結束時,我們可以爲最終用戶提供一個界面,以輸入所有需要的值來組成他/她自己的代碼。 – 2013-05-06 11:05:13

+0

使用METADATA如何? – 2013-05-06 11:10:41

+0

元數據無法做到。在一天結束時,分配代碼的業務規則和可變性位於數據庫和應用程序控制之外 - 用戶和管理員必須分配它們。您可以對列進行索引,但不能使其爲'非空'或唯一(除非您的數據庫允許UNIQUE忽略任何數量的空值)。我沒有看到元數據如何提供幫助。 – 2013-05-06 12:42:31

相關問題