我正在爲一家大理石製造公司 創建一個應用程序,以跟蹤具有給定寬度和 高度的大理石生成過程。這跟蹤按位操作正確的解決以下問題?
這是我將如何組織我的數據的表模式。 第一個是StoneInfo
其中包含基本信息有關 像「UNIQUE_ID,stone_id,stone_name,CREATION_TIME,last_purchase_time, generation_status」
UNIQUE_ID石頭 - 是隨機生成的ID - 這是保持與外鍵關係其他表StoneMetaDetails
StoneInfo
UNIQUE ID (Primary key)
STONE ID (Indexed & Unique key)
STONE_NAME (Indexed & Unique key)
CREATION_TIME
LAST_PURCHASE_TIME
GENERATION_STATUS
爲了避免第二歸一化的異常我含有S分成兩張桌子。在這裏它包含有關指定維度中每種類型的石頭的創建狀態的詳細信息。創作狀態是一樣的東西
CREATED_SUCCESSFULLY
CREATION_INPROGRESS
CRAETION_ON_HOLD_DUE_TO_LESS_REQUIREMENT
CREATION_ON_HOLD_DUE_TO_LACK_OF_RESOURCE
CREATION_ON_HOLD_DUE_TO_LACK_OF_MACHINE
CREATION_ON_HOLD
StoneMetaDetails
UNIQUE ID (FOREIGN KEY with on delete cascade)
FORMAT (PRIMARY KEY)
DIMENSION (PRIMARY KEY)
CREATION_STATUS
STORE_NAME
WEIGHT
QUANTITY_AVAILABLE
MACHINE TYPE/MACHINE ID
我想保持每個創作狀態和每種類型的石頭(其中可能有不同的口味和尺寸在其中)。我所要做的就是儘量減少桌面上的讀/寫操作,以便快速訪問。
我維護和兩個狀態值像GENERATION_STATUS
CREATION_STATUS
因爲
GENERATION_STATUS
- 當它是(「生成」或「已暫停,因爲某些原因」或「生成過程已經開始/初始化」) CREATION_STATUS
- 保持跟蹤其尺寸的特定石頭類型的確切狀態值。
在這裏,我想用按位或操作的幫助GENERATION_STATUS
列值合併這兩列的值 - 通過分配不同的恆定值(2 ^關係)
//All these values are meant for stone type
public static final long STONE_TYPE_MARBLE_20_X_30 = 2;
public static final long STONE_TYPE_MARBLE_50_X_60 = 4;
public static final long STONE_TYPE_MARBLE_10_X_60 = 8;
public static final long STONE_TYPE_MARBLE_20_X_60 = 16;
public static final long STONE_TYPE_MARBLE_40_X_60 = 32;
public static final long STONE_TYPE_MARBLE_60_X_60 = 64;
public static final long STONE_TYPE_LIMESTONE_10_X_30 = 128;
public static final long STONE_TYPE_LIMESTONE_10_X_40 = 256;
public static final long STONE_TYPE_TRAVERTINE = 512;
public static final long STONE_TYPE_MARBLE = 1024;
public static final long STONE_TYPE_GRANITE = 2048; (2^11)
//Have alloted values for 2^0 to 2^14 for stone type
//All these variables are meant for representing creation/generation status of a stone
public static final long GENERATION_SUCCESS = 2^15;
public static final long GENERATION_IN_PROGRESS = 2^16;
public static final long GENERATION_ON_HOLD_DUE_TO_MINIMAL_REQUIREMENT = 2^17;
public static final long GENERATION_ON_HOLD_DUE_TO_LACK_OF_MACHINE = 2^18;
public static final long GENERATION_ON_HOLD_DUE_TO_MACHINE_COULD_NOT_GENERATE = 2^19;
//Some ten to fifteen different types of generation error values may be possible
,這樣我可以得到它而無需加入另一張表以加快訪問速度。
更清楚我試圖映射,
stone_id
及其generation_status
在StoneInfo
表。因此,generation_status
包含狀態值,與石頭類型及其尺寸無關。
ie; (STONE_A_10_X_20 | GENERATION_SUCCESS)| (STONE_A_20_X_30 | GENERATION_INPROGRESS)在一個列中。
這是可能的幫助下按位或?我的方式是否正確?或者請給我一個更好的方法來處理這個問題的替代方案。
感謝您的耐心閱讀這一長期問題的故事:)
我試圖解釋我的問題...請在這裏評論,如果我必須添加更多的細節或編輯帖子,需要更多的信息...以獲得更好的清晰度的問題:) – Natasha