Thanks David, they are all good points; here are a few more from my wish list:
- Remove TechData* entities and use WorkEffort - get rid of all the different GlAccount Default mappings entities and design a cleaner and central entity - move return type from the return item and to the header - redesign following a more standard approach PartyClassificationGroup/PartyClassificationType/PartyClassification - instead of OrderItemShipGrpInvRes we could use InventoryItemDetail (expanded) Kind regards, Jacopo On Mar 20, 2011, at 4:33 AM, David E Jones wrote: > > I'm writing this to start a thread to discuss: > > If you could change ANYTHING in the OFBiz data model, what would it be? > > To kick this off here are some ideas I've compiled that have come up over the > years (many based on feedback from people on this mailing list), or that I > thought of recently will working on this topic. You can see them below... > > -David > > ======================================================== > > - Rename *Role entities to *Party > - Remove *Attribute and *TypeAttr entities (not generally a good practice to > use) > - Remove all status history (*Status) and just using audit on the statusId > field > - ProductPrice add quantity breaks, change PK to single field sequenced > - Get rid of QuantityBreak and use the two simple fields instead in each > place used > - Get rid of ProdCatalog*, rework it to ProductStoreCategory, ie directly > associate to the store > - Change OrderItemShipGrpInvRes to InventoryReservation, change PK to single > field sequenced > - Change Quote to be other types of Order > - Make Return more like Invoice (ie no adjustment, just use items for > everything) > - Instead of OrderItemType, OrderAdjustmentType, InvoiceItemType, > ReturnItemType just use Shared ItemType everywhere > - PartyRelationship simplify (single sequenced ID) > > - Make prefixes consistent (no suffixes), ie toPartyId instead of partyIdTo, > etc > - Change all relationships to PartyRole to be type one-nofk; use plain one > for Party and RoleType > - Move most *Type entities to Enumeration values (update seed data, referring > entities, remove *Type) (after this remove all remaining hasTable fields) > - Rework PhysicalInventory and InventoryVariance to simplify, reduce > dependency on InventoryItem > - Review use of Appl, Assoc (look at book, make sure consistent) > - Add PartyIdentification entity, get rid of various fields and other > entities (maybe even PartyTaxAuthority...) > - Change GoodIdentification to ProductIdentification > - Combine PartyContactMechPurpose and PartyContactMech (remove, only use > entity with purpose, name PartyContactMech) > - Get rid of NoteData, put noteText very-long field directly on various *Note > entities > - Review all entities with large PKs (esp 4+ fields) > - Review and do something with all createOn/By lastUpdateOn/By fields, maybe > add an auditing flag for the entity instead of just for a field > - CustRequest to Request > - FinAccount to FinancialAccount > - Invoice handle recurrence? (was using RecurrenceInfo) > - Get rid of optional ProductFeature concept (conf/etc products much better > model) > - Instead of various *Term entities and mapping, just use OrderTerm everywhere > - Cleanup/reorg ShipmentCostEstimate, CarrierShipmentMethod, etc, etc > - Agreement - make price list easier/cleaner > - Remove all createdDate, createdByUserLogin, lastModifiedDate, > lastModifiedByUserLogin fields (use framework defaults, audit-log) > - Product clean up: move dimenstions to new entity, remove content fields, etc > - Trim down big entities like Product, WorkEffort, etc; for groups of similar > fields use a more normalized structure > >
