Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Databasstruktur på ett dynamiskt ärende?

Postades av 2009-11-09 10:44:12 - Krister Kauppi, i forum arkitektur, Tråden har 6 Kommentarer och lästs av 7847 personer

Jag kommer skapa ett enklare ärendehanteringssystem där det kommer att finnas lite olika typer av ärenden. Olika ärendetyper kan se ut på olika sätt tex ett beställningsärende av en produkt har en property för antal av en produkt m.m. Jag är ganska klar med hur domänstruktur kommer att se ut men jag är osäker på hur jag ska skapa databasstrukturen.

Vad tror ni om något liknande som detta:
I Errand-tabellen sparas huvudstrukturen av ett ärende. I denna tabell sparas tex ErrandID, CreatedDate, Description m.m. Dvs värden som alla ärenden har gemensamt

I ErrandTemplate-tabellen sparas mallen för hur ett ärende ser ut, dvs vilka properties som finns på ärendet

I ErrandXXX-tabellen sparas varje (property) värde på radnivå (dock ej värden som finns i huvudstrukturen). Tex antal av en produkt sparas i en rad och storlek sparas i en annan rad. Kolumnerna som man har är ErrandID, ErrandColumnName, ErrandValue

Vad tror ni om det eller skulle ni gjort annorlunda?

PS. Jag vill eventuellt också diskutera vissa detaljer i domänstrukturen så jag lägger ärendet i arkitekturforumet och inte databasforumet.


Svara

Sv: Databasstruktur på ett dynamiskt ärende?

Postades av 2009-11-09 14:03:59 - Oskar Johansson

Jag är kluven, en annan variant är att du kör med "arv", dvs om du lägger ihop kolumnerna från alla tabellerna så får du de egenskaper du vill ha. Nackdelen är ju att det blir många tabeller, men å andra sidan kan du lättare lägga ut bra index, relationer, effektivare sökningar etc.


Svara

Sv: Databasstruktur på ett dynamiskt ärende?

Postades av 2009-11-09 21:18:40 - Niklas Jansson

1. Är "Errand" verkligen rätt? Jag har inget annat förslag men det låter som en annan typ av ärende...
2. Detta är ju egentligen ett klassiskt exempel på när db/oo inte klaffar, och du har ett spektra att välja ifrån;

Antingen löser man det superdynamiskt på db-sidan med alternativ:
- en "propertyname/propertyvalue"-tabell.
- xml lagrat i db
- andra strängbaserade varianter.
Problemen är ju de Oskar nämner; all typsäkerhet försvinner vilket även inkluderar saker som att felaktiga värden fylls i. (Det finns inget som stoppar en från att fylla i "tankstorlek" på "elbil", och inte heller att fylla i "gargamel" som värde.)



Eller så släpper man på dynamiken och har olika "propertyvalue"-kolumner för olika värden. Alltså PropertyValueBool, PropertyValueInt, ...

Man blir de mindre flexibel om nya datatyper ska in, men man får å andra sidan typsäkerhet på de man har.



Eller så släpper man ytterligare lite på flexibiliteteten, och definierar upp de Properties som är tillåtna, och tappar den enskilda typsäkerheten.
Properties
ID, Name, Type

Eller så tar man i ännu mer och har kopplingar och constraints på alla ledder, så att man får något i stil med:

Properties
ID, Name, Type

BoolProperties (constraint att type måste vara = 1, i övrigt fk på båda)
PropID, Type

IntProperties (constraint att type måste vara = 2, i övrigt fk på båda)
PropID, Type

...
IntValues
IntPropID, Value

Då kan man inte använda properties som saknas, och det blir alltid rätt typ, samtidigt som det är hyfsat lätt att utöka.



Ovanstående går ju också att utöka så att man verkligen bara kan använda en property om man är av rätt sort, på snarlikt sätt som jag har gjort med IntProperties etc.


Och vidare kommer man ut till den mest statiska och rigida, där varje enskild subklass i själva verket får en helt egen, hårt specad tabell. Då är man tillbaka i ganska lite jobb att sätta upp, men med bra typsäkerhet. Och nackdelen är framförallt att många förändringar kräver nya tabeller.


Svara

Sv: Databasstruktur på ett dynamiskt ärende?

Postades av 2009-11-10 08:45:42 - Peter Hageus

Jag har använt ganska exakt den strukturen till ett system jag håller på med nu. Har inte gått skarpt än, så det är väl för tidigt att ropa hej, men det känns bra så här långt.

Visst, man offrar typsäkerhet i databasen, men jag upprätthåller den i objekten (GUI't använder dessutom dynamiska PropertyDescriptors så ur slutanvändarperspektiv är det typsäkert).

Det som blir knöligt är om man tex. behöver göra rapporter med ett traditionellt rapportverktyg, typ Crystal. Men så är det ju alltid när saker ska vara dynamiska och användardefinerade.


Svara

Sv:Databasstruktur på ett dynamiskt ärende?

Postades av 2009-11-10 09:40:31 - Niklas Jansson

Intressant nog kom den här posten på slashdot idag:
http://developers.slashdot.org/story/09/11/09/2335214/The-NoSQL-Ecosystem
http://www.rackspacecloud.com/blog/2009/11/09/nosql-ecosystem/


Svara

Sv: Databasstruktur på ett dynamiskt ärende?

Postades av 2009-11-10 10:04:02 - Oskar Johansson

Intressant :) Men, men, inte aktuellt här tror jag. Mjo, jag tror nog att det kan fungera med niklas förslag.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 762
27 959
271 761
285
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies