아래에서 필자는 작업중인 데이터베이스의 기본 디자인을 설명합니다. 내가 DB가 아니기 때문에 나는 좋은 길이나 나쁜 길에 있을지 염려하여 약간의 충고를 위해 이것을 띄우고 싶다. 나는 나의 디자인이 적합하다는 비슷한 토론을 찾을 수 없었다.전체 데이터베이스에 대해 공유 열에 대한 마스터 테이블을 사용하고 있습니까?
내 데이터베이스에서 모든 테이블은 엔티티로 간주됩니다. 엔티티는 고객 계정, 사람, 사용자, 직원 정보 집합, 계약자 정보, 트럭, 비행기, 제품, 지원 티켓 등일 수 있습니다. 여기 현재의 엔티티 (테이블)입니다 ...
- 사람들
- 사용자
- 계정
- AccountUsers
- 주소
- 직원 정보
- 계약자 정보
그리고 이러한 엔티티에 대한 정보를 저장하기 위해 나는 두 개의 테이블이 있습니다
Entity Tables
-EntityType
-> EntityTypeID (INT)
-Entities
-> EntityID (BIGINT)
-> EnitityType (INT) : foreign key
내가 만든 모든 테이블이 자동 생성 된 기본 키와 엔티티 테이블에 ENTITYID 열에 외부 키를 가지고있다. 내가 좋아하는 일부 공유 필드가 엔티티 테이블에서
,- DateCreated
- DateModified는
- 는
- 는
- 이
모든 테이블에서 트리거를 사용하여 삽입시 엔티티 유형이 올바른 엔티티 항목을 자동으로 작성합니다. 업데이트 트리거는 LastModified 날짜를 업데이트합니다. 보기의 응용 프로그램 계층의 관점에서
이 모든 코드는 개별 개체에 대해 걱정 할 일은이 이제을합니다 (USER_Modified/User_Created 필드 "가 그에 대한 업데이트를 수행"을 제외 ENTITYID에 가입하여) 엔티티 테이블의 이유는 EAV 모델을 가질 계획인데, 모든 엔티티 유형을 사용자 정의 필드로 확장 할 수 있습니다. 또한 엔티티에 대한 메타 데이터를 저장하기에 적합합니다 (생성/수정 된 필드와 같은).
저는 DB 디자인을 처음 접했고 2 단계 의견을 원했습니다.
1. MySQL, SQL Server? 하나를 선택. 2. "나는 EAV 모델을 가질 계획입니다 .... 나는 DB 디자인을 처음 접했을뿐입니다. 분명히. – podiluska