이것은 프로그래밍 문제보다 더 많은 설계상의 문제입니다.열의 고유 한 조합에 대해 PK를 만들거나 숫자 rowID를 추가하려면
Name Barcode BarcodeFormat etc...
----------------------------------------
(Name, Barcode, BarcodeFormat)
고유 테이블 (후보 키)의 레코드를 식별 할 세 개의 열이 있습니다
이 나는 소매 제품에 대한 세부 정보를 저장하는 테이블이있다. 그러나이 테이블에는 FK가 필요한 다른 테이블이 있습니다. 그래서 나는 auto_increment
열 itemId
을 소개하고 그것을 만들었습니다.
내 질문은 - 내가 (itemId, Name, Barcode, BarcodeFormat)
로 PK
을해야하거나 PK(itemId)
및 UNIQUE(Name, Barcode, BarcodeFormat)
이 더 좋을 것입니다.
내 관심사는 INSERT
및 SELECT
운영 측면에서의 성능이지만 크기에 대한 의견도 환영합니다. PK (해당 itemId)와 UNIQUE (이름, 바코드, BarcodeFormat) :
나는 mysql
확실히
좋아하는 ...... ...... –
-1 '기본 키'의 선택은 임의적입니다.마지막으로 요점은 특히 혼란 스럽습니다. 무결성 제약 조건은 비즈니스 규칙 데이터베이스의 논리적 표현이어야합니다. 그들이 아니라면 당신은 심각하게 잘못된 것을하고 있습니다! – onedaywhen
@onedaywhen 내 의견을 완전히 놓쳤습니다. 독창적 인 조합은 비즈니스 * 중심 개념이므로 ** 비즈니스 요구가 변화함에 따라 ** 언제든지 변경 될 수 있습니다 ** (고유 한 제약 조건을 깨뜨릴 수있는 바코드가없는 제품의 완벽하게 합당한 예처럼). 그러나 기본 키의 필요성은 * 영구 *이므로 고유 제한 조건의 필요성보다 오래 남아있을 수 있습니다. 두 가지를 분리하면 융통성과 유지 보수성이 향상됩니다. 두 가지를 병합하면 데이타베이스 요구 사항을 현재의 비즈니스 요구 사항에 맞추게됩니다 (비즈니스가 바뀌지 않기를 바랄뿐입니다). – Bohemian