l12345 ha scritto:
ciao, vedi la faccenda del t-sql è essenziale, se la trascuri è come pretendere di programmare solo con il drag-drop dei controlli nell'ide di vs. inoltre, nessuno sano di mente, andrebbe a costruire un db sql server "a-la-access": il motivo è che generalmente si tratta di basi di dati molto più complesse e il linguaggio di script è talmente più comodo\potente che arrivi a non volerne\poterne più fare a meno :).

Infatti venendo da access ho in mente "quel modo" di pensare. Comunque condivido pienamente il fatto di lavorare lato codice, lo faccio sempre che posso!

comunque per rispondere alla tua domanda: per ricavare il ddl di una tabella, la selezioni dal treeview degli oggetti del tuo db --> pulsante dx --> script table as --> create to --> new query window --> e il servizievole ide ti scodella quanto ti serve.
poi, visto che siamo ancora qui l'ultimo dell'anno, ti butto giù un esempio di script:
use tempdb
go

if exists(select * from sys.tables where name='struttura')
begin
drop table dbo.[struttura]
end

if exists(select * from sys.tables where name='destinazione')
begin
drop table dbo.[destinazione]
end

create table dbo.[destinazione](id int identity(1,1) not null,
Nome nchar(10) not null,
utente nchar(10) not null,
CONSTRAINT [pkdestinazione] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
)

create table dbo.[struttura](
id int identity(1,1) not null,
id_destinazione int not null,
nome nchar(10) not null,
CONSTRAINT [pkstruttura] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
)

ALTER TABLE [dbo].[struttura]
WITH CHECK ADD CONSTRAINT [FK_struttura_destinazione] FOREIGN KEY([id_destinazione])
REFERENCES [dbo].[destinazione] ([id])
go

e, in ultimo, a costo di essere pedante, ti rinnovo il mio consiglio: ricontrolla la base dati. ;)
saluti

Ok, ora ho creato il linguaggio T-Sql, per la tabella cataloghi è questo:
USE [DbCataloghi2]
GO

/****** Object:  Table [dbo].[tblCataloghi2]    Script Date: 12/31/2010 19:45:41 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[tblCataloghi2](
  [id] [int] IDENTITY(1,1) NOT NULL,
  [NomeCatalogo] [nchar](10) NOT NULL,
  [PercorsoFile] [nchar](10) NOT NULL,
  [Visibile] [bit] NOT NULL,
  [DataCaricamento] [datetime] NOT NULL,
  [utente] [nchar](10) NOT NULL,
  [DataViaggio] [datetime] NOT NULL,
  [prezzo] [nchar](10) NOT NULL,
  [id_struttura] [int] NOT NULL,
 CONSTRAINT [PK_tblCataloghi2] PRIMARY KEY CLUSTERED 
(
  [id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[tblCataloghi2]  WITH CHECK ADD  CONSTRAINT [FK_tblCataloghi2_tblStrutture2] FOREIGN KEY([id_struttura])
REFERENCES [dbo].[tblStrutture2] ([id_struttura])
GO

ALTER TABLE [dbo].[tblCataloghi2] CHECK CONSTRAINT [FK_tblCataloghi2_tblStrutture2]
GO

destinazioni:
USE [DbCataloghi2]
GO

/****** Object:  Table [dbo].[tblDestinazioni]    Script Date: 12/31/2010 19:47:55 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[tblDestinazioni](
  [id_destinazione] [int] IDENTITY(1,1) NOT NULL,
  [NomeDestinazione] [nchar](10) NOT NULL,
  [utente] [nchar](10) NOT NULL,
  [id_struttura] [nchar](10) NOT NULL,
  [id_catalogo] [nchar](10) NOT NULL,
 CONSTRAINT [PK_tblDestinazioni] PRIMARY KEY CLUSTERED 
(
  [id_destinazione] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO



e strrutture:
USE [DbCataloghi2]
GO

/****** Object:  Table [dbo].[tblStrutture2]    Script Date: 12/31/2010 19:48:29 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[tblStrutture2](
  [id_struttura] [int] IDENTITY(1,1) NOT NULL,
  [id_catalogo] [nchar](10) NOT NULL,
  [NomeStruttura] [nchar](10) NOT NULL,
  [id_destinazione] [int] NOT NULL,
 CONSTRAINT [PK_tblStrutture2] PRIMARY KEY CLUSTERED 
(
  [id_struttura] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[tblStrutture2]  WITH CHECK ADD  CONSTRAINT [FK_tblStrutture2_tblDestinazioni2] FOREIGN KEY([id_destinazione])
REFERENCES [dbo].[tblDestinazioni2] ([id_destinazione])
GO

ALTER TABLE [dbo].[tblStrutture2] CHECK CONSTRAINT [FK_tblStrutture2_tblDestinazioni2]
GO




grazie per i consigli...e buon anno!

Creazione Siti Vicenza
Posizionamento Siti - SEO
156 messaggi dal 01 dicembre 2010
Penso che devi documentarti sulla "Normalizzazione dei DataBase"
Prova a lanciare una ricerca su internet
__________________________________________________________
Comunque il DB dovrebbe essere cosi:

__Tabella Destinazioni
____id_destinazione______( int / Non null / PK / Contatore )
____NomeDestinazione_____( Tipo dati che preferisci )
____utente_______________( Tipo dati che preferisci )
____id_Struttura_________(NON METTERLO ERRATO )
____id_catalogo__________(NON METTERLO ERRATO )

__Tabella Strutture
____id_struttura_________( int / Non null / PK / Contatore )
____id_destinazione______( int / Non null )
____NomeStruttura________( Tipo dati che preferisci )
____id_catalogo__________(NON METTERLO ERRATO )

__Tabella Cataloghi
____id_catalogo__________( int / Non null / PK / Contatore )
____id_struttura_________( int / Non null )
____NomeCatalogo_________( Tipo dati che preferisci )
____PercorsoFile_________( Tipo dati che preferisci )
____Visibile_____________( Tipo dati che preferisci )
____DataCaricamento______( Tipo dati che preferisci )
____Utente_______________( Tipo dati che preferisci )
____DataViaggio__________( Tipo dati che preferisci )
____Prezzo_______________( Tipo dati che preferisci )
____id_destinazione______(NON METTERLO ERRATO )



Poi costruisci le relazioni fra:
id_destinazione tab. Destinazioni --> id_destinazione tab. Strutture
id_struttura tab. Strutture --> id_struttura tab. Cataloghi

Vedrai che ti vengono correttamente con l'infinito solo da una parte
__________________________________________________________________
Fatte questo il DB è funzionante
__________________________________________________________________
PERCHE TI HO CONTRASSEGNATO 4 CAMPI CON ERRATO ?
Tu mi dici

Nella tabella destinazioni ci sono tutte le destinazioni (appunto).
Per ogni destinazione ci sono una o piu strutture

Nella ipotetica destinazione di "Ancona" (1 record) quale delle
più strutture ci metteresti ????
___________________________________________________________________
Ti ricordo inoltre che quandi andrai a popolare le tabelle se gli
id_destinazione nella tabella Destinazioni hanno valori da 1 a 50
nel campo id_destinazione della tabella strutture non potrai scrivere 51
__________________________________________________________________
Osservo che al campo prezzo della tabella Cataloghi hai usato
tipo dati nchar c'è un motivo particolare? diversamente
e meglio usare money ( dovrai fare moltiplicazioni somme ecc...)
__________________________________________________________________
CONSIGLI GENERALI
_________________________________________________________________
I nomi dei campi scrivili
a) piu corti possibile
b) senza spazi fra i caratteri
c) non usare caratteri speciali
d) non usare nomi speciali come dim int case if iif ecc...
e) i nomi dei campi devono essere diversi fra di loro all'interno della
tabella e molto meglio nell'intero DB
Pensa cosa succederebbe se dovrai paragonare fra di loro
id_destinazione della tab Destinazioni e id_destinazione della tab Strutture
__________________________________________________________________
A questo proposito consiglio di scrivere i nomi tabella
sempre con 2 caratteri ( De, St, Ca, )
e i nomi dei campi preceduti dal nome tabella
Tabella De Campi DeId DeND DeUt
Tabella St Campi StId StDe StNS
Tabella Ca Campi CaId CaSt CaNC CaPF CaVi CaDC CaUt CaDV CaPr

Quando scriverai formule e funzioni complesse ti renderai conto del motivo
Comunque come preferisci
__________________________________________________________________
Scusami se sono stata troppo lunga ma i DB sono la mia passione
Buon 2011
nman ha scritto:
Penso che devi documentarti sulla "Normalizzazione dei DataBase"
Prova a lanciare una ricerca su internet

Ok, una ricerca la faccio, mi piace sapere cose nuove!

__________________________________________________________
Comunque il DB dovrebbe essere cosi:

__Tabella Destinazioni
____id_destinazione______( int / Non null / PK / Contatore )
____NomeDestinazione_____( Tipo dati che preferisci )
____utente_______________( Tipo dati che preferisci )
____id_Struttura_________(NON METTERLO ERRATO )
____id_catalogo__________(NON METTERLO ERRATO )

__Tabella Strutture
____id_struttura_________( int / Non null / PK / Contatore )
____id_destinazione______( int / Non null )
____NomeStruttura________( Tipo dati che preferisci )
____id_catalogo__________(NON METTERLO ERRATO )

__Tabella Cataloghi
____id_catalogo__________( int / Non null / PK / Contatore )
____id_struttura_________( int / Non null )
____NomeCatalogo_________( Tipo dati che preferisci )
____PercorsoFile_________( Tipo dati che preferisci )
____Visibile_____________( Tipo dati che preferisci )
____DataCaricamento______( Tipo dati che preferisci )
____Utente_______________( Tipo dati che preferisci )
____DataViaggio__________( Tipo dati che preferisci )
____Prezzo_______________( Tipo dati che preferisci )
____id_destinazione______(NON METTERLO ERRATO )



Poi costruisci le relazioni fra:
id_destinazione tab. Destinazioni --> id_destinazione tab. Strutture
id_struttura tab. Strutture --> id_struttura tab. Cataloghi

Vedrai che ti vengono correttamente con l'infinito solo da una parte

Alla fine avere le relazioni uno a molti ci sono riuscito, comunque faccio una prova anche con il tuo esempio :)

__________________________________________________________________
Fatte questo il DB è funzionante
__________________________________________________________________
PERCHE TI HO CONTRASSEGNATO 4 CAMPI CON ERRATO ?
Tu mi dici

Nella tabella destinazioni ci sono tutte le destinazioni (appunto).
Per ogni destinazione ci sono una o piu strutture

Nella ipotetica destinazione di "Ancona" (1 record) quale delle
più strutture ci metteresti ????

Beh ancona puo avere da 0 a n strutture, in base all'id della relazione

___________________________________________________________________
Ti ricordo inoltre che quandi andrai a popolare le tabelle se gli
id_destinazione nella tabella Destinazioni hanno valori da 1 a 50
nel campo id_destinazione della tabella strutture non potrai scrivere 51
__________________________________________________________________
Osservo che al campo prezzo della tabella Cataloghi hai usato
tipo dati nchar c'è un motivo particolare? diversamente
e meglio usare money ( dovrai fare moltiplicazioni somme ecc...)

La scelta è dettata non dal fatto delle operazioni aritmetiche (non necessarie) ma dal dare la possibilità al cliente di inserire anche del testo (come ad esempio "prezzi a partire da 'n'"

__________________________________________________________________
CONSIGLI GENERALI
_________________________________________________________________
I nomi dei campi scrivili
a) piu corti possibile
b) senza spazi fra i caratteri
c) non usare caratteri speciali
d) non usare nomi speciali come dim int case if iif ecc...
e) i nomi dei campi devono essere diversi fra di loro all'interno della
tabella e molto meglio nell'intero DB
Pensa cosa succederebbe se dovrai paragonare fra di loro
id_destinazione della tab Destinazioni e id_destinazione della tab Strutture
__________________________________________________________________
A questo proposito consiglio di scrivere i nomi tabella
sempre con 2 caratteri ( De, St, Ca, )
e i nomi dei campi preceduti dal nome tabella
Tabella De Campi DeId DeND DeUt
Tabella St Campi StId StDe StNS
Tabella Ca Campi CaId CaSt CaNC CaPF CaVi CaDC CaUt CaDV CaPr

Quando scriverai formule e funzioni complesse ti renderai conto del motivo
Comunque come preferisci

Grazie mille per i consgli, li accetto sempre piu che volentieri! :D

__________________________________________________________________
Scusami se sono stata troppo lunga ma i DB sono la mia passione

Figurati, è sempre produttivo sapere cose nuove da chi le conosce gia!

Buon 2011

grazie, anche a te!
Modificato da ricardo78 il 01 gennaio 2011 11.38 -

Creazione Siti Vicenza
Posizionamento Siti - SEO

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.