Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

Îåêßíçóå áðü ôï ìÝëïò gmlogic. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 16-02-2006, 02:04. Υπάρχουν 17 απαντήσεις.
Σελίδα 1 από 2 (18 εγγραφές)   1 2 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  14-02-2006, 23:40 9681

    ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Έχω ένα table μέ πάνω απο 97 Fields

    Χρησιμοποιώ

    ' Create INSERT, UPDATE, and DELETE commands.

    Dim command_builder As New OleDbCommandBuilder(OleDbData_adapter)

    Στο  data_adapter.Update(changes) παίρνω Exception "Η παράσταση είναι πολύ περίπλοκη"

    Υπάρχει περιορισμός Fields ?

    Ευχαριστώ


    George Matzouranis
  •  14-02-2006, 23:46 9682 σε απάντηση της 9681

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    97 fields?Δεν σηκώνει κανονικοποίηση αυτό το πράγμα?
    Νομίζω οτι δεν έχει Limit στα πεδία..
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  14-02-2006, 23:49 9684 σε απάντηση της 9681

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Οταν έχω 98 πεδία παίρνω Exception "Η παράσταση είναι πολύ περίπλοκη"
    στα 97 δουλεύει

    George Matzouranis
  •  14-02-2006, 23:53 9685 σε απάντηση της 9682

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Για τι RDBMS μιλάμε?
    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  15-02-2006, 00:03 9686 σε απάντηση της 9681

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    ACCESS
    Αλλά και με MSQL το ίδιο κάνει
    Στο updateCommand μόνο, ενώ σε InsertCommand δουλεύει
    Αν θέλεις μπορώ να σου στείλω και το table
    George Matzouranis
  •  15-02-2006, 07:53 9689 σε απάντηση της 9681

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Μπορείς να κάνεις post το SELECT statement καθώς και το UPDATE των 97 πεδίων;

    Οι προϋποθέσεις για να δουλέψει το CommandBuilder είναι
    - Να κάνεις query μόνο σε έναν πίνακα (όχι joins)
    - O πίνακας αυτός να έχει primary key
    - To primary key να συμπεριλαμβάνεται στο output (του Select command)

    Καλό πάντως είναι να μην δουλεύεις με CommandBuilder, έχει δύο βασικά μειονεκτήματα. Το πρώτο είναι ότι κάθε φορά που τρέχει, τραβάει τα metadata που χρειάζεται (ονόματα, μεγέθη, τύποι πεδίων) οπότε έχεις performance penalty. Το δεύτερο είναι ότι δεν μπορείς να καθορίσεις το είδος του concurrency που θα χρησιμοποιηθεί, δηλαδή στην περίπτωση του Update command, αν στο WHERE θα έχει "WHERE id=@old_id" ή "WHERE id=@old_id AND lastname=@old_lastname AND phone=@old_phone AND ..."

    [Edit] Επίσης, ρίξε μια ματιά σε αυτό: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnadonet/html/commandbuilder.asp


    Vir prudens non contra ventum mingit
  •  15-02-2006, 08:54 9691 σε απάντηση της 9681

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Θα συμφωνήσω με τον Pkefal. Χρειάζεται άμεσα normalization!
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  15-02-2006, 10:43 9701 σε απάντηση της 9681

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Είναι το MF πελατών και έχει μέσα στοιχεία για τι 12 περιόδους γιά αυτό και τα τόσα πεδία.Δεν έχω πρόβλημα να κάνω normalize απλά πίστευα στο no Limit.
    Ok κάνω και Post τα commandtext

    ?data_adapter.SelectCommand.CommandText
    "SELECT * FROM PEL1 WHERE PEL1ID=102"
    ?data_adapter.updateCommand.CommandText
    "UPDATE PEL1 SET PELNAME1 = ? WHERE ( ((? = 1 AND PELKEY IS NULL) OR (PELKEY = ?)) AND ((? = 1 AND PCODE IS NULL) OR (PCODE = ?)) AND ((? = 1 AND PGROUP IS NULL) OR (PGROUP = ?)) AND ((? = 1 AND BRANCH IS NULL) OR (BRANCH = ?)) AND ((? = 1 AND TAX_NO IS NULL) OR (TAX_NO = ?)) AND ((? = 1 AND PELNAME1 IS NULL) OR (PELNAME1 = ?)) AND ((? = 1 AND PELNAME2 IS NULL) OR (PELNAME2 = ?)) AND ((? = 1 AND PELADR1 IS NULL) OR (PELADR1 = ?)) AND ((? = 1 AND PELADR2 IS NULL) OR (PELADR2 = ?)) AND ((? = 1 AND CITY IS NULL) OR (CITY = ?)) AND ((? = 1 AND NOMOS IS NULL) OR (NOMOS = ?)) AND ((? = 1 AND ZIP IS NULL) OR (ZIP = ?)) AND ((? = 1 AND PHONE1 IS NULL) OR (PHONE1 = ?)) AND ((? = 1 AND PHONE2 IS NULL) OR (PHONE2 = ?)) AND ((? = 1 AND FAX IS NULL) OR (FAX = ?)) AND ((? = 1 AND PELLOGADR1 IS NULL) OR (PELLOGADR1 = ?)) AND ((? = 1 AND PELLOGADR2 IS NULL) OR (PELLOGADR2 = ?)) AND ((? = 1 AND LOGZIP IS NULL) OR (LOGZIP = ?)) AND ((? = 1 AND LOGCITY IS NULL) OR (LOGCITY = ?)) AND ((? = 1 AND LOGNOMOS IS NULL) OR (LOGNOMOS = ?
    )) AND ((? = 1 AND PELPARADADR1 IS NULL) OR (PELPARADADR1 = ?)) AND ((? = 1 AND PELPARADADR2 IS NULL) OR (PELPARADADR2 = ?)) AND ((? = 1 AND PARADZIP IS NULL) OR (PARADZIP = ?)) AND ((? = 1 AND PARADCITY IS NULL) OR (PARADCITY = ?)) AND ((? = 1 AND PARADNOMOS IS NULL) OR (PARADNOMOS = ?)) AND ((? = 1 AND EPAGEL IS NULL) OR (EPAGEL = ?)) AND ((? = 1 AND EKTEL_CODE IS NULL) OR (EKTEL_CODE = ?)) AND ((? = 1 AND PELKATHG IS NULL) OR (PELKATHG = ?)) AND ((? = 1 AND CODE_SALER IS NULL) OR (CODE_SALER = ?)) AND ((? = 1 AND TAX_CODE IS NULL) OR (TAX_CODE = ?)) AND ((? = 1 AND PRICE_CODE IS NULL) OR (PRICE_CODE = ?)) AND ((? = 1 AND MAX_CR IS NULL) OR (MAX_CR = ?)) AND ((? = 1 AND EKPT IS NULL) OR (EKPT = ?)) AND ((? = 1 AND DAYS_EKPT IS NULL) OR (DAYS_EKPT = ?)) AND ((? = 1 AND K_ IS NULL) OR (K_ = ?)) AND ((? = 1 AND OPEN_GRAM IS NULL) OR (OPEN_GRAM = ?)) AND ((? = 1 AND OPEN_EPIT IS NULL) OR (OPEN_EPIT = ?)) AND ((? = 1 AND SALES_00 IS NULL) OR (SALES_00 = ?)) AND ((? = 1 AND SALES_01 IS NULL) OR (SALES_01 = ?)) AND
    ((? = 1 AND SALES_02 IS NULL) OR (SALES_02 = ?)) AND ((? = 1 AND SALES_03 IS NULL) OR (SALES_03 = ?)) AND ((? = 1 AND SALES_04 IS NULL) OR (SALES_04 = ?)) AND ((? = 1 AND SALES_05 IS NULL) OR (SALES_05 = ?)) AND ((? = 1 AND SALES_06 IS NULL) OR (SALES_06 = ?)) AND ((? = 1 AND SALES_07 IS NULL) OR (SALES_07 = ?)) AND ((? = 1 AND SALES_08 IS NULL) OR (SALES_08 = ?)) AND ((? = 1 AND SALES_09 IS NULL) OR (SALES_09 = ?)) AND ((? = 1 AND SALES_10 IS NULL) OR (SALES_10 = ?)) AND ((? = 1 AND SALES_11 IS NULL) OR (SALES_11 = ?)) AND ((? = 1 AND SALES_12 IS NULL) OR (SALES_12 = ?)) AND ((? = 1 AND SALES_13 IS NULL) OR (SALES_13 = ?)) AND ((? = 1 AND INVS_NO IS NULL) OR (INVS_NO = ?)) AND ((? = 1 AND PELDR_00 IS NULL) OR (PELDR_00 = ?)) AND ((? = 1 AND PELDR_01 IS NULL) OR (PELDR_01 = ?)) AND ((? = 1 AND PELDR_02 IS NULL) OR (PELDR_02 = ?)) AND ((? = 1 AND PELDR_03 IS NULL) OR (PELDR_03 = ?)) AND ((? = 1 AND PELDR_04 IS NULL) OR (PELDR_04 = ?)) AND ((? = 1 AND PELDR_05 IS NULL) OR (PELDR_05 = ?)) AND ((? = 1 AND PELDR_0
    6 IS NULL) OR (PELDR_06 = ?)) AND ((? = 1 AND PELDR_07 IS NULL) OR (PELDR_07 = ?)) AND ((? = 1 AND PELDR_08 IS NULL) OR (PELDR_08 = ?)) AND ((? = 1 AND PELDR_09 IS NULL) OR (PELDR_09 = ?)) AND ((? = 1 AND PELDR_10 IS NULL) OR (PELDR_10 = ?)) AND ((? = 1 AND PELDR_11 IS NULL) OR (PELDR_11 = ?)) AND ((? = 1 AND PELDR_12 IS NULL) OR (PELDR_12 = ?)) AND ((? = 1 AND PELDR_13 IS NULL) OR (PELDR_13 = ?)) AND ((? = 1 AND L_SALE IS NULL) OR (L_SALE = ?)) AND ((? = 1 AND PELCR_00 IS NULL) OR (PELCR_00 = ?)) AND ((? = 1 AND PELCR_01 IS NULL) OR (PELCR_01 = ?)) AND ((? = 1 AND PELCR_02 IS NULL) OR (PELCR_02 = ?)) AND ((? = 1 AND PELCR_03 IS NULL) OR (PELCR_03 = ?)) AND ((? = 1 AND PELCR_04 IS NULL) OR (PELCR_04 = ?)) AND ((? = 1 AND PELCR_05 IS NULL) OR (PELCR_05 = ?)) AND ((? = 1 AND PELCR_06 IS NULL) OR (PELCR_06 = ?)) AND ((? = 1 AND PELCR_07 IS NULL) OR (PELCR_07 = ?)) AND ((? = 1 AND PELCR_08 IS NULL) OR (PELCR_08 = ?)) AND ((? = 1 AND PELCR_09 IS NULL) OR (PELCR_09 = ?)) AND ((? = 1 AND PELCR_10 IS NULL) OR (PELCR_1
    0 = ?)) AND ((? = 1 AND PELCR_11 IS NULL) OR (PELCR_11 = ?)) AND ((? = 1 AND PELCR_12 IS NULL) OR (PELCR_12 = ?)) AND ((? = 1 AND PELCR_13 IS NULL) OR (PELCR_13 = ?)) AND ((? = 1 AND L_PAY IS NULL) OR (L_PAY = ?)) AND ((? = 1 AND EISPR IS NULL) OR (EISPR = ?)) AND ((? = 1 AND BAL_00 IS NULL) OR (BAL_00 = ?)) AND ((? = 1 AND BAL_01 IS NULL) OR (BAL_01 = ?)) AND ((? = 1 AND BAL_02 IS NULL) OR (BAL_02 = ?)) AND ((? = 1 AND BAL_03 IS NULL) OR (BAL_03 = ?)) AND ((? = 1 AND BAL_04 IS NULL) OR (BAL_04 = ?)) AND ((? = 1 AND BAL_05 IS NULL) OR (BAL_05 = ?)) AND ((? = 1 AND DOY IS NULL) OR (DOY = ?)) AND ((? = 1 AND LGROUP IS NULL) OR (LGROUP = ?)) AND ((? = 1 AND EPIL IS NULL) OR (EPIL = ?)) AND ((? = 1 AND FSORT IS NULL) OR (FSORT = ?)) AND ((? = 1 AND TOPPAR IS NULL) OR (TOPPAR = ?)) AND ((? = 1 AND ARMODIOS IS NULL) OR (ARMODIOS = ?)) AND ((? = 1 AND Notes IS NULL) OR (Notes = ?)) AND (PEL1ID = ?) )"

    Ευχαριστώ !!!!!!!!
    George Matzouranis
  •  15-02-2006, 12:20 9713 σε απάντηση της 9681

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Δε θέλω να σε στεναχωρέσω, αλλά μόνο το μέγεθος του sql command, δείχνει ότι το database design είναι προβληματικό! Είναι ξεκάθαρη περίπτωση ότι οι στήλες του τύπου Field_01, Field_02 ... Field_XX πρέπει να γίνονται γραμμές σε άλλο table.

    Ένα σημαντικό tip που θα πρότεινα, είναι να κάνεις non-nullable όποιο column δεν έχει πιθανότητα να είναι Null.
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  15-02-2006, 12:39 9714 σε απάντηση της 9681

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Δεν με στεναχωρείς καθόλου,δεκτή κάθε πρόταση.
    Απλά αυτός ο πίνακας γίνεται import από παλιά εφαρμογή που τα fields δεχόντουσαν τύπο array.
    Και με παραξένεψε το LIMIT του command.
    George Matzouranis
  •  15-02-2006, 21:00 9739 σε απάντηση της 9689

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Αν πρόσεξες, ο περιορισμός δεν οφειλόταν στον αριθμό των πεδίων αλλά στην περιπλοκότητα του UPDATE statement. Ο λόγος που δημιουργήθηκε τόσο περίπλοκο statement είναι από τη μια ο υπερβολικός αριθμός πεδίων, το γεγονός ότι όλα (ακόμα και το primary key) είναι NULLable, και η έλλειψη ενός πεδίου timestamp για την υλοποίηση του optimistic locking.
    Δεν έχει σημασία ποιό provider, ποιά βάση χρησιμοποιείς ή ποιά γλώσσα χρησιμοποιείς, υπάρχει πάντα ένα όριο πάνω από το οποίο θα αρχίσουν να διαμαρτύρονται όλες.

    Ας τα πάρουμε τα πράγματα από την αρχή:
    Η τυπική διαδικασία όταν κάνεις import ένα πίνακα από παλιά εφαρμογή ή flat file είναι να φορτώσεις τα δεδομένα στα γρήγορα σε ένα προσωρινό πίνακα και μετά να περάσεις τις εγγραφές του στους τελικούς, κανονικοποιημένους πίνακες που σκοπεύεις να χρησιμοποιήσεις. Ο προσωρινός πίνακας δεν πρέπει να χρησιμοποιείται για κανένα λόγο εκτός από τη διαδικασία του import.
    Το δεύτερο πράγμα που πρέπει να προσέξεις είναι ότι πρέπει να αποφεύγεις τα NULL πεδία όπου μπορείς. Το NULL δεν είναι διευκόλυνση "μήπως και λείπει καμμία τιμή". Το NULL δημιουργεί προβλήματα καθώς δεν μπορεί να χρησιμοποιηθεί σε indexes και δημιουργεί προβλήματα σε αναζητήσεις και συγκρίσεις.
    Το τρίτο είναι ότι η χρήση του CommandBuilder έχει κόστος καθώς κάθε φορά που ξεκινάει η εφαρμογή σου, τα SQL Statements πρέπει να δημιουργηθούν από την αρχή. Ο CommandBuilder είναι χρήσιμος όταν πειραματίζεσαι και φτιάχνεις ένα πρωτότυπο της εφαρμογής, αλλά πρέπει να αντικαθίσταται με κανονικά SQL Statements ή stored procedures στον τελικό κώδικα.

    Και να επαναλάβω όσα είπαν και οι προηγούμενοι. Ο πίνακας είναι τεράστιος. Αν δεν τον σπάσεις σε μικρότερους πίνακες δεν πρόκειται να βγάλεις άκρη, ό,τι και να κάνεις. Σε όποια βάση και να δουλεύεις, ένας πίνακας 97 πεδίων είναι πρόβλημα.
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  16-02-2006, 00:21 9760 σε απάντηση της 9681

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Συγνώμη για το Offtopic αλλά νομίζω ότι θα πρέπει να πάρει θέση ο Ζαχαρίας για τον πίνακα με τα 97 πεδία. Να μας πει τι πρέπει να γίνει Big Smile [:D]
    Only two things are infinite, the universe and the human stupidity, and I'm not sure about the former.

    Albert Einstein - US (German-born) physicist (1879 - 1955)
  •  16-02-2006, 00:34 9762 σε απάντηση της 9681

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Όχι, το παράδειγμα του φίλου δεν είναι αρκετά... Ζαχαρώδες. Αντ' αυτού, προτείνω στον Ζαχαρία να ασχοληθεί με αυτό: http://thedailywtf.com/forums/36193/ShowPost.aspx
    Μην αφήνετε τα media να σας "ταΐζουν"!
  •  16-02-2006, 01:37 9767 σε απάντηση της 9762

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Επειδή έχετε αρχίσει να φτιάχνεται ατμόσφαιρα thedailywtf εδώ, να δώσω στην δημοσιότητα ένα αληθινό πίνακα από βάση δεδομένων που συνάντησα τελευταία, που τα 97 πεδία του πέφτουν λίγα, μιας και ο ίδιος έχει 169...

    /****** Object:  Table [dbo].[tbl_safetydoor]    Script Date: 16/2/2006 1:21:40 πμ ******/
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tbl_safetydoor]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[tbl_safetydoor]
    GO

    /****** Object:  Table [dbo].[tbl_safetydoor]    Script Date: 16/2/2006 1:21:42 πμ ******/
    CREATE TABLE [dbo].[tbl_safetydoor] (
     [orderid] [int] IDENTITY (1, 1) NOT NULL ,
     [orderTrackID] [varchar] (50) COLLATE Greek_CI_AS NULL ,
     [orderInternalID] [varchar] (50) COLLATE Greek_CI_AS NULL ,
     [orderCustomerID] [varchar] (10) COLLATE Greek_CI_AS NULL ,
     [orderInputDate] [datetime] NULL ,
     [orderInputUser] [varchar] (50) COLLATE Greek_CI_AS NULL ,
     [orderReceiveDate] [datetime] NULL ,
     [orderReceiveType] [int] NULL ,
     [orderStatus] [int] NULL ,
     [orderSeller] [int] NULL ,
     [orderCustomer] [int] NULL ,
     [orderFinalCustomer] [int] NULL ,
     [orderPayerCustomer] [int] NULL ,
     [orderCompeteForcast] [datetime] NULL ,
     [orderComplete] [datetime] NULL ,
     [orderCostForecast] [float] NOT NULL ,
     [orderLocation] [varchar] (50) COLLATE Greek_CI_AS NULL ,
     [orderBuildingBlock] [varchar] (50) COLLATE Greek_CI_AS NULL ,
     [orderBuilding] [varchar] (50) COLLATE Greek_CI_AS NULL ,
     [orderApartment] [varchar] (10) COLLATE Greek_CI_AS NULL ,
     [orderType] [int] NULL ,
     [orderSpecials] [bit] NOT NULL ,
     [orderSpecialsCompination] [int] NULL ,
     [orderDeliverStatic] [varchar] (50) COLLATE Greek_CI_AS NULL ,
     [orderExecutionType] [int] NULL ,
     [orderIsStolen] [bit] NOT NULL ,
     [orderIsDressed] [bit] NOT NULL ,
     [orderCustomerInformDate] [datetime] NULL ,
     [orderPlacementDate] [datetime] NULL ,
     [orderStockHouse] [varchar] (50) COLLATE Greek_CI_AS NULL ,
     [orderStockPlace] [varchar] (50) COLLATE Greek_CI_AS NULL ,
     [orderNotes] [text] COLLATE Greek_CI_AS NULL ,
     [doordressed] [int] NULL ,
     [doormodel] [int] NULL ,
     [doorfora] [int] NULL ,
     [doordiaktype] [int] NULL ,
     [doorlock] [int] NULL ,
     [doorColorMaterial] [int] NULL ,
     [doorColorType] [int] NULL ,
     [doorColorName] [int] NULL ,
     [doorWidth] [float] NOT NULL ,
     [doorHeight] [float] NOT NULL ,
     [doorEidikesDiastaseis] [bit] NOT NULL ,
     [doorWallWidth] [float] NOT NULL ,
     [doorWallHeight] [float] NOT NULL ,
     [doorWallWidthSug] [float] NOT NULL ,
     [doorWallHeightSug] [float] NOT NULL ,
     [doorWidthStandard] [float] NOT NULL ,
     [doorHeightStandard] [float] NOT NULL ,
     [doorWidthSug] [float] NOT NULL ,
     [doorHeightSug] [float] NOT NULL ,
     [doormenteses] [int] NULL ,
     [doorblock] [int] NULL ,
     [doormonosh] [int] NULL ,
     [doorsirtis] [int] NULL ,
     [doorfiresafe] [int] NULL ,
     [doorektroph] [int] NULL ,
     [dooraerofrakths] [int] NULL ,
     [doorPackage] [int] NULL ,
     [caseyliko] [int] NULL ,
     [caseEidikhXrevsh] [bit] NOT NULL ,
     [casekypri] [int] NOT NULL ,
     [caseColorMaterial] [int] NULL ,
     [caseColorType] [int] NULL ,
     [caseColorName] [int] NULL ,
     [caselastixo] [int] NULL ,
     [furnishOutMaterialGroup] [int] NULL ,
     [furnishOutMaterial] [int] NULL ,
     [furnishOutType] [int] NULL ,
     [furnishOutColorMaterial] [int] NULL ,
     [furnishOutColorType] [int] NULL ,
     [furnishOutColorName] [int] NULL ,
     [furnishInMaterialGroup] [int] NULL ,
     [furnishInMaterial] [int] NULL ,
     [furnishInType] [int] NULL ,
     [furnishInColorMaterial] [int] NULL ,
     [furnishInColorType] [int] NULL ,
     [furnishInColorName] [int] NULL ,
     [furnishInWidth] [float] NOT NULL ,
     [furnishInHeight] [float] NOT NULL ,
     [woodcaseType] [int] NULL ,
     [woodcaseMaterial] [int] NULL ,
     [woodcaseWidth] [float] NOT NULL ,
     [woodcaseWidthSug] [float] NOT NULL ,
     [woodcaseHeight] [float] NOT NULL ,
     [woodcaseColorMaterial] [int] NULL ,
     [woodcaseColorType] [int] NULL ,
     [woodcaseColorName] [int] NULL ,
     [woodcaseWallWidth] [float] NOT NULL ,
     [galvanizeWillCompleteLater] [bit] NOT NULL ,
     [galvanizeIsCompleted] [bit] NOT NULL ,
     [galvanizeInWidth] [float] NOT NULL ,
     [galvanizeInHeight] [float] NOT NULL ,
     [galvanizeWidth] [float] NOT NULL ,
     [galvanizePrevWidthLeft] [float] NOT NULL ,
     [galvanizePrevWidthRight] [float] NOT NULL ,
     [galvanizePrevWidthUp] [float] NOT NULL ,
     [galvanizeTurnLeft] [float] NOT NULL ,
     [galvalizeNotes] [text] COLLATE Greek_CI_AS NULL ,
     [diakosmitikaMaterial] [int] NULL ,
     [diakosmitikaColorMaterial] [int] NULL ,
     [diakosmitikaColorType] [int] NULL ,
     [diakosmitikaColorName] [int] NULL ,
     [phxakiMaterialGroup] [int] NULL ,
     [phxakiMaterial] [int] NULL ,
     [phxakiType] [int] NULL ,
     [phxakiColorMaterial] [int] NULL ,
     [phxakiColorType] [int] NULL ,
     [phxakiColorName] [int] NULL ,
     [phxakiColorStats] [bit] NOT NULL ,
     [prevaziaInType] [int] NULL ,
     [prevaziaInMaterialGroup] [int] NULL ,
     [prevaziaInMaterial] [int] NULL ,
     [prevaziaInHeight] [float] NOT NULL ,
     [prevaziaInWidth] [float] NOT NULL ,
     [prevaziaInLenght] [float] NOT NULL ,
     [prevaziaInLenMon] [int] NULL ,
     [prevaziaInColorMaterial] [int] NULL ,
     [prevaziaInColorType] [int] NULL ,
     [prevaziaInColorName] [int] NULL ,
     [prevaziaOutType] [int] NULL ,
     [prevaziaOutMaterialGroup] [int] NULL ,
     [prevaziaOutMaterial] [int] NULL ,
     [prevaziaOutHeight] [float] NOT NULL ,
     [prevaziaOutWidth] [float] NOT NULL ,
     [prevaziaOutLenght] [float] NOT NULL ,
     [prevaziaOutLenMon] [int] NULL ,
     [prevaziaOutColorMaterial] [int] NULL ,
     [prevaziaOutColorType] [int] NULL ,
     [prevaziaOutColorName] [int] NULL ,
     [armokalyptraInType] [int] NULL ,
     [armokalyptraInMaterial] [int] NULL ,
     [armokalyptraInHeight] [int] NULL ,
     [armokalyptraInWidth] [int] NULL ,
     [armokalyptraInColorMaterial] [int] NULL ,
     [armokalyptraInColorType] [int] NULL ,
     [armokalyptraInColorName] [int] NULL ,
     [armokalyptraOutType] [int] NULL ,
     [armokalyptraOutMaterial] [int] NULL ,
     [armokalyptraOutHeight] [int] NULL ,
     [armokalyptraOutWidth] [int] NULL ,
     [armokalyptraOutColorMaterial] [int] NULL ,
     [armokalyptraOutColorType] [int] NULL ,
     [armokalyptraOutColorName] [int] NULL ,
     [akolEjvtLabh] [int] NULL ,
     [akolEjvtLabhKat] [int] NULL ,
     [akolEjvtPomolo] [int] NULL ,
     [akolEjvtPomoloKat] [int] NULL ,
     [akolEsvtPomolo] [int] NULL ,
     [akolEsvtPomoloKat] [int] NULL ,
     [akolPomoloBlok] [int] NULL ,
     [akolPomoloBlokKat] [int] NULL ,
     [akolPomoloSyrth] [int] NULL ,
     [akolPomoloSyrthKat] [int] NULL ,
     [akolEpistomia] [int] NULL ,
     [akolEpistomiaKat] [int] NULL ,
     [akolMati] [int] NULL ,
     [akolMatiKat] [int] NULL ,
     [akolLastixoPortas] [int] NULL ,
     [akolLastixoSetKvd] [varchar] (50) COLLATE Greek_CI_AS NULL ,
     [akolEjvtPomFora] [int] NULL ,
     [akolEsvtPomFora] [int] NULL ,
     [sysLastUpdate] [datetime] NOT NULL ,
     [sysUser] [varchar] (50) COLLATE Greek_CI_AS NOT NULL
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO

     CREATE  UNIQUE  INDEX [orderid] ON [dbo].[tbl_safetydoor]([orderid]) ON [PRIMARY]
    GO

    Να σημειώσω δε, ότι από ότι θα παρατηρήσατε τα περισσότερα πεδία είναι τύπου int, και ότι κάθε τέτοιο πεδίο συνδέεται με ένα πίνακα για να παίρνει τιμές... Οπότε φανταστείτε το μέγεθος της βάσης σε αριθμό πινάκων... Huh? [:^)]

    Το καλό είναι ότι είναι τελείως κανονικοποιημένο!!! Geeked [8-|]

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  16-02-2006, 01:46 9768 σε απάντηση της 9767

    Απ: ΕΡΩΤΗΣΗ ΓΙΑ CommandBuilder

    Θα μπορούσαν όλα τα prevazia για παράδειγμα να είναι μία εγγραφή που να βγαίνει σε έναν πίνακα prevazia και εκεί να μπαίνουν τα references. Αντίστοιχα για τα armokalyptra, κλπ. Τί είναι 10 πίνακες παραπάνω... Τουλάχιστον δεν θα έχεις τεράστια statements...
    Vir prudens non contra ventum mingit
Σελίδα 1 από 2 (18 εγγραφές)   1 2 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems