Montar o banco com essa estrutura?

Eu tenho uma situação para criar meu banco de dados…

Tipo( Terrestre, Aero, Fluvial )

Meio( Carro, Onibus, Aviao, Barco)

Veiculo(

- se for carro (campos: PLaca, Hodometro, modelo, Marca) 
- se for Onibus(campos: Empresa, nº bilhete)
- se for Aviao (campos: Empresa, nº Etiket, nº localizador)

e pretendo fazer combos aninhados… mais no banco como ficaria?

[quote=Guguuu]Eu tenho uma situação para criar meu banco de dados…

Tipo( Terrestre, Aero, Fluvial )

Meio( Carro, Onibus, Aviao, Barco)

Veiculo(

- se for carro (campos: PLaca, Hodometro, modelo, Marca) 
- se for Onibus(campos: Empresa, nº bilhete)
- se for Aviao (campos: Empresa, nº Etiket, nº localizador)

e pretendo fazer combos aninhados… mais no banco como ficaria?[/quote]

Acredito que o melhor caso seria criar uma única tabela de veículos, aí na aplicação, dependendo do tipo do veículo tu preenche os campos necessarios para o mesmo.

Edit: uma única tabela para essa situação é claro:

Crie essas tabelas normais

carro (campos: PLaca, Hodometro, modelo, Marca)
Onibus(campos: Empresa, nº bilhete)
Aviao (campos: Empresa, nº Etiket, nº localizador)

e crie a tabela Veiculo

Veiculo (tipo) :o tipo vc pode deixar como char, ou integer, e especificar C para Carro, O para Onibus, A para aviao

concordo com o igor_ks.

crie uma tabela para cada tipo de veiculo, e uma tabela veliculo com Id e Tipo.

se estiver utilizando JPA para persistencia, há mecanismos prontos para trabalhar desta forma.

Concordo com o jks1903.

Criar uma tabela para cada veículo está errado, pois, quando teu sistema precisar suportar mais um veículo você terá que criar mais uma tabela.

Então, eu modelaria:

MEIO_TRANSPORTE (Terrestre, Aero, Fluvial).
TIPO_VEICULO (Carro, MEIO_TRANSPORTE, Onibus, Aviao, Barco, Bicicleta, etc.);
VEICULO (Placa: xxx, TIPO_VEICULO, Modelo, Marca, Hodometro: … );

Se quiser ter mais controle ainda, modelaria MARCA, MODELO.

[quote=g4j]Concordo com o jks1903.

Criar uma tabela para cada veículo está errado, pois, quando teu sistema precisar suportar mais um veículo você terá que criar mais uma tabela.
[/quote]

Isso é meio relativo… se formos pensar assim não temos como modelar o banco de dados e temos que usar meta-dados para tudo que é campo…
Nese caso é preciso analisar se vão ser somente estes tipos de veículo ou se vão poder ter outros. Se tipo de veículo for uma coisa meio que pré-definida não vejo problemas em criar varias tabelas diferentes, já que são caracteristicas diferentes.

No entanto se for partir para meta-dados, eu modelaria assim.

Tabela TipoVeiculo
id e tipo

Tabela CaracteristicasTipoVeiculo
id caracteristica
descricao caracteristica
id tipoveiculo

Tabela Veiculo
id veiculo
descricao veiculo

Tabela VeiculoCaracteristicas
id veiculo
id tipoveiculo
id caracteristica
preenchimento caracteristica

Desta forma um veiculo poderia ter mais de 1 tipo de veiculo e caracteristicas mistas (por exemplo um carro anfibio)

no caso do aviao, onibus, barco, seria só esses campos mesmo.

mais no caso do carro… eu tenho todas as informaçoes possiveis de um carro(renavan, documento em dia, tudo) ae to fazendo assim

tipo( id nome)

meio( id, nome, #tipo)

veiculo(id, #meio, #carro, bilheteOnibus, empresaOnibus, etickAviao, localizadorAviao, bilheteBarco, empresaBarco)

carro( id, placa, renavan, cor, modelo, anoModelo, anoRetirado, … )

[quote=jmmenezes][quote=g4j]Concordo com o jks1903.

Criar uma tabela para cada veículo está errado, pois, quando teu sistema precisar suportar mais um veículo você terá que criar mais uma tabela.
[/quote]

Isso é meio relativo… se formos pensar assim não temos como modelar o banco de dados e temos que usar meta-dados para tudo que é campo…
Nese caso é preciso analisar se vão ser somente estes tipos de veículo ou se vão poder ter outros. Se tipo de veículo for uma coisa meio que pré-definida não vejo problemas em criar varias tabelas diferentes, já que são caracteristicas diferentes.

[/quote]

Entendo.

Mesmo assim prefiro optar por escalabilidade. Isso facilita bastante quando preciso fazer agrupamentos e contagens em relatórios por ex.