What is data modeling (data Modeling)?

Asked

Viewed 149 times

8

  • What is data modeling (data Modeling)?

  • In what context is it used?

  • At what time of development it should begin to be done?

  • Does it relate to object orientation? One opposes or complements the other?

  • It is usually related to the database project. It should be one of the first activities of the project. It is not object oriented.

3 answers

5


What is data modeling (data Modeling)?

Data modeling is the definition of how the data structures of an application should be mounted. Then the developer defines what data it makes sense to have in the application, how it is organized and related details of how this data is adopted in the application.

Some of the best professionals in the field put much more weight on it than creating algorithms, because if modeling is well done you can apply the algorithm that is necessary. Having all the necessary data and organized in a way that makes sense it is easy to apply operations, which is the end of the application.

That’s where you’re actually drawing what your application will be able to work and do. It doesn’t define how to do it, but what it can do.

Programming is creating models. Data is what software should handle. Point.

Modeling only occurs with the collection of requirements. Much of the design work of the model is to know what the model should provide, is to understand the problem today and how it might be tomorrow. You have to conceptualize very well.

There are several techniques that tell you to do just that. I will quote one that is trendy that is DDD. Although it does not make it as simple as possible. It even encourages a model a little too complex for my taste.

You don’t need tools to model something. The code is enough to express the model. doesn’t mean they’re not useful in certain scenarios. It does not need a complex process, but a well-applied methodology and some bureaucracy has its merit in the appropriate contexts. Modeling is very simple and only needs brain and code then what one does of extra to model can help or disturb in each case or for each person.

In what context is it used?

Can use in multiple contexts.

I understand that the standard literature found speaks more in the context of the database, but it is a mistake to think that modeling data is just that. Maybe that’s why non-database data models are so bad. People don’t give the same value.

Inside the application you have data, and you need to model it, it can’t be random. What causes chaos is to think that only database tables need modeling.

Where there is data to be manipulated you must do modeling. How much time you spend, what tools you adopt, how accurate you should be and what level of requirements you should collect, depends on what you’re working on. But in any case it will make a model, even if informally, structures defined in code are models of your data.

Artificial intelligence uses data models at its core. No need for database.

At what time of development it should begin to be done?

In general, as soon as possible, it doesn’t make much sense to do after you already needed the organized data.

Does it relate to object orientation? One opposes or complements the other?

You may have a relationship, but you don’t have to.

I would not say that there is total opposition, but they are different things, even if they are similar. From a certain point of view there is complementarity, but at a certain point they start to be quite different and can be opposed in some way.

Obviously the data modeling focus efforts, thinking over... data.

To object modeling focuses efforts, thinking upon... objects.

Objects need data, right? So everything seems to see.

However, one of the OO schools says that you should be concerned about their behaviors, or at least their contracts. They make it clear that the state, the data are implementation details. At least the right way to do OO is like this. So you can already start to see the opposition?

There goes what I always say, you can’t use getters/setters because it exposes the implementation detail, exposes the data model. In order not to expose the data itself, this was never a problem for the code, what complicates the code is the leakage of abstraction, is to expose the data model.

But it’s hard to do all that abstraction, right? That’s why I say that luckily people don’t program object-oriented, they just say they do that. Lucky, programming OO is very difficult.

When the programmer exposes the data model he is not modeling objects, he is modeling data. Good!

That’s why OOP works best for mechanisms, that’s where the data is really mere implementation details. When you model domains you model more data than anything else. The most that makes it look like OO is that some behaviors can or should be together (most should be separate so as not to complicate future maintenance (SRP), but when you start doing that you’re moving away from the original idea of OO).

Pure OOP is very dogmatic. Modeling data is something that people perform all the time and it makes more sense, even if at a certain point the two techniques are used in a complementary way. So you see around objects with data exposed, even though through getters/setters.

Conceptually they oppose each other, but in practice they complement each other because people make a hybrid. Thank goodness!

  • Are there other data modeling techniques besides DDD, in or out of fashion? Can you talk a little about it? Whether OO-related as DDD or not.

  • DDD is not to model data, it even helps in this but indirectly, it is a technique to collect requirements and express how the application should be, the data model is only a point, and secondary, one of the reasons I don’t like it very much. There are several other ways that make something similar, but not directly data modeling.

-2

What is data modeling (data Modeling)?

Basically it is to draw the table structure of your database. It can be done through tools made available by the companies themselves that develop the databases or not.

During data modeling, you design your tables, create the relationship between them, define indexes, create constraints, create data domains, and more.

In the vast majority of cases, data modeling is done in one of these specific programs for this. This makes life easier for those who are working on a project, to generate scripts for several databases. In addition, it is possible to import tables from an existing database.

Another advantage of using a modeling software, is to standardize the name of your objects. This avoids chaos... Imagine 10 people working on the same project, each creating things their own way, in the end, no one else would follow a pattern, if there wasn’t a tool that did it for them.

In what context is it used?

Usually in commercial systems, returned by software companies. But it is not restricted to this. Anyone can create a data modeling for their projects, in order to support them during the development of the same.

At what time of development it should begin to be done?

It depends a lot on the methodology used in the development.

If the famous waterfall is used, the systems analyst models the data before sending a job specification to the programmer.

In cases where the agile development methodology is used, it may be a task of a user story.

Does it relate to object orientation? One opposes or complements the other?

Not necessarily. Data modeling is another tool that assists the development of a system. You can screen, even in systems that do not use object orientation. And no, one does not oppose the other.

-3

Make diagrams of UML:

  • Case of Use
  • Class diagram
  • Sequence Diagram
  • Diagram of Activities

To get a good look at the software.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.