Definire una gerarchia (struttura ad albero ricorsivo) in sql

martedì 16 gennaio 2007 - 12.12

Bohemian_Rhapsody Profilo | Newbie

Buon giorno a tutti.
Scusate se riposto il mio problema ma credo di averlo esposto male.
Devo definire uno script in sql (sto usando SQL SERVER 2005) che mi permetta di gestire una gerarchia di categorie merceologiche nel mio database.
La struttura ad albero che dovrò gestire è di questo tipo:
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



Avrei bisogno di definire chiaramente e nel modo più ottimale possibile, lo script per creare la tabella e le stored procedures INSERT,UPDATE,DELETE,GET e GETALL.
Scusate nuovamente ma mi sono state proposte tante soluzioni a questo problema e non so quale sia la migliore.
Ringrazio anticipatamente per le eventuali risposte.

alx_81 Profilo | Guru

>Buon giorno a tutti.
Ciao!

>Scusate se riposto il mio problema ma credo di averlo esposto
>male.
>Devo definire uno script in sql (sto usando SQL SERVER 2005)
>che mi permetta di gestire una gerarchia di categorie merceologiche
>nel mio database.

Prova a dare un occhio a questo post
http://www.dotnethell.it/forum/messages.aspx?ThreadID=12878


>Ringrazio anticipatamente per le eventuali risposte.
Di nulla!
ciao!

>
>

Alx81 =)

http://blogs.dotnethell.it/suxstellino

Bohemian_Rhapsody Profilo | Newbie

Seguendo l'esempio che lei mi ha consigliato, nel mio caso dovrei scrivere:

IF EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id('Categorie'))
DROP TABLE Categorie


CREATE TABLE Categorie
(
IDCategoria int IDENTITY(1,1) PRIMARY KEY CLUSTERED,
NomeCategoria(100) NOT NULL,
IDCategPadre int NULL
)

CREATE NONCLUSTERED INDEX IX_IDCategPadre ON Categorie
(
IDCategPadre
)

Io invece avevo pensato di considerare IDCategPadre come chiave esterna che punta ad IDCategoria, per facilitare la cancellazione.
E' giusta o sbagliata come idea?
Se è giusta poi, òe stored procedures come verrebbero?

melmar20 Profilo | Junior Member

Non puoi farlo perchè non è valido il CASCADE su una singola tabella

alx_81 Profilo | Guru

>Non puoi farlo perchè non è valido il CASCADE su una singola
>tabella
confermo.. non è possibile fare il cascade sulla stessa tabella.
Alx81 =)

http://blogs.dotnethell.it/suxstellino
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