Creare una tabella per gestire una gerarchia

venerdì 12 gennaio 2007 - 10.57

Bohemian_Rhapsody Profilo | Newbie

Salve!
Devo creare uno script in sql, per realizzare e gestire nel database delle CATEGORIE MERCEOLOGICHE.
Queste dovranno avere un'organizzazione gerarchica, quindi sono previste anche delle sottocategorie.
Io avevo pensato d'inserire nella tabella i campi: IdCatPadre e IdSottoCat, con IdCatPadre che è chiave esterna e punta ad IdSottoCat. Ma ho molti dubbi a riguardo
Attendo una vostra risposta ringraziandovi anticipatamente.

melmar20 Profilo | Junior Member

io ho provato una cosa simile....ma la tabella non era consistente inquanto nel campo che tu chiami idCategoriaPadre non sapevo cosa inserire....quando la categoria non aveva sottocategorie...

us01739 Profilo | Expert

Essenziamente quello che scrivi è corretto, ma purtroppo è anche abbastanza difficile esprimere valutazioni o consigli specifici non conoscendo a fondo il progetto.
Una cosa è certa: perchè i database siano funzionali è necessario non avere dati rindondanti, quindi l'idea di utilizzare delle "chiavi di collegamento" per non duplicarli è corretta..

Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

Bohemian_Rhapsody Profilo | Newbie

Sto affrontando un progetto d'ingegneria del software. In questo progetto mi viene richiesto espressamente di gestire nel database (sto utilizzando SQL SERVER 2005) le categorie merceologiche, le quali dovranno avere un’organizzazione gerarchica come nell’esempio che segue:

Servizi finanziari
Assicurazioni
Assicurazioni sulla vita
Assicurazioni infortuni e malattie

Agenzie assicurative e di servizi
Agenti di assicuraz. e serv.

Settore immobiliare
Locaz.-gestione immob. Industriali
Locaz.-gestione immob. Residenziali

Commercio dettaglio
Grande distribuzione
La mia difficoltà sta nel definire in modo preciso lo script da creare

Grazie

us01739 Profilo | Expert

Quindi il problema è solo lo script?
A questo punto la cosa si semplifica molto, perchè è sufficiente che una volta che hai realizzato il db con tabelle, indici, ecc...., tramite "SQL Server Management Studio" puoi creare automaticamente il codice sql che serve per ricreare il db a salvarlo come file ".sql"
Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

melmar20 Profilo | Junior Member

io ho provato a fare una cosa molto simile....e ho riscontrato un problema che non riesco a risolvere

Allora io devo modellare un'entita Azienda,la quale può avere delle stottoAziende,che a loro volta posso averne delle altre e così via discorrendo.In questo modo si viene a creare una struttura ad albero.

Ho provato a modellare il tutto creando un unica tabella con i seguenti campi : IdCategoria(IDENTITY (PK)),NomeAzienda,IDCategoriaPadre(FK references IdCategoria)

ora l'errore che mi dà quando vado ad inserire un'azienda che non ha sottoaziende è che nel campo IDCategoriaPadre non può esserci il valore null inquanto si andrebbe a violare il vincolo di chiave esterna

come posso fare?

Bohemian_Rhapsody Profilo | Newbie

Quindi il ragionamento che ho fatto prima è corretto? Cioè: IdCategoriaPadre come chiave esterna, che punta ad IdCategoriaFiglio che invece è posto come chiave primaria?

us01739 Profilo | Expert

>Quindi il ragionamento che ho fatto prima è corretto? Cioè: IdCategoriaPadre come chiave >esterna, che punta ad IdCategoriaFiglio che invece è posto come chiave primaria?

Per quanto mi rigaurda sì.

Bye Bye

---------------------------------------------------
Roberto Gelmini - Microsoft Certified Professional
www.robertogelmini.com
---------------------------------------------------

melmar20 Profilo | Junior Member

io invece l'ho pensata esattamente al contrario....

IdCategoria come chiave primaria e IdCategoriaPadre come chiave esterna....però c'è sempre quel problema...

non sò se sono stato chiaro

melmar20 Profilo | Junior Member

ho provato anche la seconda soluzione : Figlio come chiave primaria e Padre come chiave esterna che punta al filgio....ma il problema rimane sempre lo stesso cosa inserire quando il padre non ha filgi?

non posso inserire i valori nulli perchè non farebbero riferimento a nussun valore perchè nella chiave primaria non possono esserci valori nulli...
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5