Voglio rappresentare una relazione padre-figlio ricorsiva in un database MySQL. Voglio creare una relazione category
- subcategory
. Una categoria può avere N sottocategorie e ognuna di esse può avere sottocategorie N e così via. Stavo pensando di avere una singola tabella category
con una chiave straniera che punta in se stessa. Ecco cosa intendo:Progettazione database SQL, relazione ricorsiva padre-figlio?
CREATE TABLE `category` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`parent_category` int NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (`parent_category`) REFERENCES `category` (`id`)
)
parent_category
può essere nullo se una categoria è una categoria di livello superiore.
È questo il modo corretto di rappresentare una relazione come questa? Inoltre ci sono altre cose che dovrei prendere in considerazione nel mio design (prestazioni, domande ...)?
possibile duplicato di [SQL -? Come conservare e spostarsi nelle gerarchie] (http://stackoverflow.com/questions/38801/sql -how-to-store-and-navigate-hierarchies) –
A causa delle funzionalità SQL limitate di MySQL, non lo farei in questo modo in MySQL. Avrai davvero difficoltà a recuperare i dati da quella gerarchia a causa della mancanza di query ricorsive. Cerca "nested set model" per un design diverso che può essere implementato con MySQL –