4

이 MySQL 데이터베이스를 설계하는 가장 좋은 방법은 무엇입니까?MySQL 상속?

나는 cars, fuelsmotor oils입니다. 각 차량은 fuels 및 임의 수의 motor oils을 사용할 수 있습니다. 이 데이터베이스를 설계하는 가장 좋은 방법은 무엇입니까?

따라서 하나의 car은 하나 또는 다수의 fuels과 하나 이상의 motor oils을 가질 수 있습니다.

그래서 데이터베이스에 cars, fuelsmotor_oils 개의 테이블이 있어야합니다. fuelsmotor_oils에는 price, date_produced 등과 같은 유사한 속성이 있습니다. products라고하는 다른 테이블을 만들면 현명합니까? OOP 언어를 사용하는 경우

나는 FuelMotorOilsProduct 확장 할 Product 엔티티를 가질 것이며,이 방법은 Product에 정의 된 특성을 가지고있다.

어떻게 이것을 MySQL 데이터베이스에서 디자인 할 수 있습니까? MySQL에 상속 같은 것이 있습니까? 관계 데이터베이스에는 상속이 없다는 것을 알고 MySQL에서 이것을 모방하는 방법이 있습니다. 더 잘 설명 할 사람이 필요합니까? 어떻게 수행합니까?

+1

'product' 테이블에서 제품을 참조하는'fuel' 및'motor_oil' 테이블에 외래 키를 추가하면됩니다. 데이터베이스 내부에서 실제 상속을 정의 할 필요가 없다는 것을 알기에, 당신이해야 할 일은별로 없다. – Patrickdev

+0

이것이 표결 된 이유는 알 수 없습니다. 이것은 합법적 인 질문입니다. 올바른 데이터베이스 디자인은 많은 프로젝트에서 충분히 주목을받지 못합니다. –

+0

@Patrickdev 감사합니다! 이제 문제는 어떻게 OOP 언어로 이것을 작성했는지 PHP로 말할 수 있다는 것입니다. Car, Fuel, MotorOil, Products Entities가 있습니까? 또는 엔티티의 제품을 무시해야합니까? 이것을 답으로 쓰십시오;) – Limeni

답변

1

상속을 받기 위해 제품 테이블에 연결되는 연료 및 모터 오일 각각에 제품 테이블과 외래 키가있을 수 있습니다.

엔티티 사이에 외부 개체가있는 매핑 테이블을 정의하여 많은 관계를 만듭니다.

당신은 자동차와 연료가 두 개의 외래 키 필드 morors_id 그리고 당신은 일대일 외래 키를 사용하여 SQL에서 OOP의 위임 부분을 시뮬레이션 할 수 있습니다

+0

제품이 동시에 해당 솔루션에서 연료와 엔진 오일이되는 것을 어떻게 방지합니까? –

1

을 fuels_id이 테이블 carsFuelsMap을 만들 수있다 감안할. 예를 들어, Fuel 항목에는 모든 공유 값을 식별하는 Product에 대한 외래 키가 있습니다.

자동차와 연료를 연결하는 데있어 실제로는 다 대다 관계입니다. 기존의 방법으로는 자동차와 연료의 각 유효한 조합에 대해 하나의 행이있는 CarFuel 테이블을 사용하지만 ProductFuelMotorOil의 부분을 위임 했으므로 CarProduct 테이블을 사용하고 싶을뿐입니다. Fuel 테이블에 가입 할 수있는 연료가 필요합니다.