Click here to Skip to main content
15,896,450 members

Welcome to the Lounge

   

For discussing anything related to a software developer's life but is not for programming questions. Got a programming question?

The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.

 
AnswerRe: What to start learning? Pin
PIEBALDconsult7-Mar-17 11:15
mvePIEBALDconsult7-Mar-17 11:15 
AnswerRe: What to start learning? Pin
Mycroft Holmes7-Mar-17 13:34
professionalMycroft Holmes7-Mar-17 13:34 
AnswerRe: What to start learning? Pin
KarstenK7-Mar-17 20:56
mveKarstenK7-Mar-17 20:56 
JokeRe: What to start learning? Pin
dan!sh 7-Mar-17 23:09
professional dan!sh 7-Mar-17 23:09 
GeneralRe: What to start learning? Pin
den2k887-Mar-17 23:16
professionalden2k887-Mar-17 23:16 
AnswerRe: What to start learning? Pin
kalberts8-Mar-17 0:55
kalberts8-Mar-17 0:55 
GeneralRe: What to start learning? Pin
Member 130443558-Mar-17 2:38
Member 130443558-Mar-17 2:38 
GeneralRe: What to start learning? Pin
kalberts9-Mar-17 2:25
kalberts9-Mar-17 2:25 
My favorite modelling tool, the age-old ER, Entity-Relationship model, focuses strongly on the information structures, rather than the workflow. It is essentially a semi-formal drawing technique - and of course there are a number of "dialects". Some computer based tools are available, often forcing you to use a specific dialect. The one I have used most recently is called yEd[^] - it is not specifically for ER, but supports it well.

An ER model is a graph with "entities" (data objects) forming the nodes, drawn as rectangular boxes. Actually, the entity is like a class definition; a "customer" entity is any customer object. Relationships to other entiries are edges, drawn as arrows. Arrowheads, both ends, indicate how many objects are involved in a relation: A "bill" object and a "customer" object has an n:1 relationship, indicated by different heads. Notation exists for "0 or more", "exactly 1", "1 or more" (more specific cases, like 1 to 3, is indicated textually by the arrowhead).

For straightforward relationships, a textual label on the edge is sufficient it is always double, indicating each entity's view of the relationship, such as a customer "bought" what the bill specifies; this "was bought by" a customer. If you need to handle data about the relationship itself, which are not properties of the entities (such as the date when the relationship was established), or a three way relationship (such as who endorsed it), you can draw it as a diamond with arrows to two or more entities, and attributes associated with the relationship.

Two entities may have several distinct relationhips. Often, splitting up a diffusely specified relationships into distinct one can be enlightening, e.g. "business connection" going to "Buys products from", "Provides programming services to" and "Owns shares in" - different procedures will need to relate to the relationship in different ways.

Entitiy attributes are either, in simple models, drawn as ovals attached to the entity, or, in larger models, listed inside the entity rectangle - this illustrates one dialect variation! Another variation (more in modelling style than language) is how much you break down complex data into distinct entities: Is a "car" one single entity, or should you split off an "engine" entity with an "is powered by / powers" relationship? If otherwise identical cars differ only in engine selection, and/or each engine has a number of reationships to other entities, such as "Used fuel type / is used by", splitting up may be a good idea, but going too far increases the size of the model too much.

Many ER models include all entities relevant for a business (or whatever) - including non-digital ones. A car entity may be physical; the driving log may be computerized, but the driver identified in the log is a human. If you need to refer to that car, or that human, you need to represent them by selected attributes in e.g. a "personnel record", but entire sub-networks may remain as non-digital entities.

When you have identified all your data (typically ending up with 10-100 entities, and a relations count in the same range), you try applying operations (or workflow, if you like): Draw a closed curve around those entities you believe are required, and "simulate" the operation: From which entities do you obtain information (including which relationships to follow from the starting point)? Which entities do you modify? Do you have all data required to do that, or do you have to bring other entities in? Do the lookups / modifications reveal that there are relationship that you hadn't thought of? (there always is, early in the modelling process!) Are some enties that you included inside the curve not really used, so the curve can be changed, leaving them out? Are all the entities referenced available digitally?

ER does not define any (semi)formalized language for describing the operations, you do that in as informal or formal text as you choose. In the ER spirit, you put a lot of logic understanding into the relationships. The procedure description really add very litte semantics; they just select which semantics to use for the operation. If you need to read the code to understand how things fit together, then you probably are missing a relationship in your model!

(Note that this is a quite different philosophy from an SQL data model, where you treat data as "pure data" which represents nothing but its own value, and all the semantics lies in the procedures. But then: ER is a conceptual modelling tool, SQL is an implementation tool.)

My experience is that the users/customers are able to relate to, and discuss, entities and relationships. You can't slam a hundred pages of SQL code or C++ class definitions on the table, but you can display a 50-node network of entities they recognize from their traditional operations. With an ER model, you get feedback from non-programmers. Non-programmers never give you feedback on SQL procedures!

Some ER drawing tools have functions for transforming an ER model to a e.g. a set of SQL tables, one table for each entity (class) and relationship. As with most code generating tools, the product may be messy and unreadable, but you have to comprehend it to write the SQL operations on it. Often, the ER tools enforces implementation requirement on the conceptual modelling, such as requiring you to identify a 'primary key'. Usually it requires you to implement all code in a single language. And they take for granted that all entities are digital, and you want a single digital model for the entire model. (One of the models we build was for all the entities of the public administration of our city, 100+ "main" entities, a fair share of them non-digital - you would never make one single application, not even a single database for every single operation of a 200,000 size city!)

Briefly stated: I don't like those generators. I find it easy generate by hand the required class definitions, or whatever it is called in the language selected, and then I can select those entities needed for a specific operation. Some of them are database tables, some of them are not. Generating by hand gives a lot better readability, more flexibility e.g. in choice of language etc.

I've written too much already... It is impossible to give an ER crash course in a forum thread. But maybe this gives you some idea of what ER modelling is about.
AnswerPython ! Pin
Davie212408-Mar-17 3:10
Davie212408-Mar-17 3:10 
AnswerRe: What to start learning? Pin
kdmote8-Mar-17 4:09
kdmote8-Mar-17 4:09 
AnswerRe: What to start learning? Pin
Jaime Premy8-Mar-17 4:48
professionalJaime Premy8-Mar-17 4:48 
AnswerRe: What to start learning? Pin
AnotherKen8-Mar-17 8:46
professionalAnotherKen8-Mar-17 8:46 
GeneralRe: What to start learning? Pin
Member 130443558-Mar-17 9:00
Member 130443558-Mar-17 9:00 
GeneralRe: What to start learning? Pin
AnotherKen8-Mar-17 12:20
professionalAnotherKen8-Mar-17 12:20 
AnswerRe: What to start learning? Pin
Gerry Schmitz8-Mar-17 11:23
mveGerry Schmitz8-Mar-17 11:23 
GeneralTwo comments Pin
Marc Clifton7-Mar-17 7:18
mvaMarc Clifton7-Mar-17 7:18 
GeneralRe: Two comments Pin
raddevus7-Mar-17 7:54
mvaraddevus7-Mar-17 7:54 
GeneralRe: Two comments Pin
OriginalGriff7-Mar-17 8:20
mveOriginalGriff7-Mar-17 8:20 
GeneralRe: Two comments Pin
Mark_Wallace7-Mar-17 9:20
Mark_Wallace7-Mar-17 9:20 
GeneralRe: Two comments Pin
PIEBALDconsult7-Mar-17 12:24
mvePIEBALDconsult7-Mar-17 12:24 
GeneralVS2017 installed in about 30 minutes or so Pin
OriginalGriff7-Mar-17 6:36
mveOriginalGriff7-Mar-17 6:36 
GeneralRe: VS2017 installed in about 30 minutes or so Pin
raddevus7-Mar-17 7:56
mvaraddevus7-Mar-17 7:56 
GeneralRe: VS2017 installed in about 30 minutes or so Pin
OriginalGriff7-Mar-17 8:17
mveOriginalGriff7-Mar-17 8:17 
GeneralRe: VS2017 installed in about 30 minutes or so Pin
raddevus7-Mar-17 8:36
mvaraddevus7-Mar-17 8:36 
GeneralRe: VS2017 installed in about 30 minutes or so Pin
OriginalGriff7-Mar-17 8:54
mveOriginalGriff7-Mar-17 8:54 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.