Data model designing for ERP modules - erp

Requirement:
Need to design a data model for few ERP modules AP,AR,PO,OM,BOM,WIP,MTL
Description:
This requirement is to collect all the important ERP module tables and design a sample model. Example: I'm going to create a data model for PO module, I will collect all the important PO and it's relevant table and take the necessary column and build a PO module. Output result: PO module will have all PO related data.
Help:
Any once faced similar requirement? Kindly guide me on the above your help will be highly appreciated.

Thilak, The best approach is to understand the business process first. How PO Module works in company in retail industry will be completely different with those in energy industry.
Always use normalization. Some data model might seems to have only one information while they can be many, e.g: One of 3 row of item in Purchase Order seems to have only one 'Required Date', while it might be many 'Required Date' with diff Qty, and distributed to many Warehouse.
There are many possibilities of those stuff, so having your application apply the standard behavior, but adjusted to the industry needs, is crucial part to define how your data model will look like.

Related

How to integrate various data marts?

I recently joined a healthcare company and they have separate datamarts for each type of each type of diseases. Lets say I have three different DM's as follows:
HIV
HepC
Respiratory
How would I go on to integrate these into one Data-warehouse?
From what I have read, this is a Kimball Aprroach.
And I should look for similar dimensions and try to build on that.
Any other recommendations ?
Your question is too vague. Without knowing what you want to do with a data warehouse, and how the data marts are structured, it's hard to comment on how you should go about it. You might want to step back and think about two things, and explain: what do I want to do? and what do I have?
Talk with the stake holders to settle on what you they to have on a data warehouse. How do they want to use a data warehouse? Is it for internal analytics is for simple aggregation reports? If so, what kind of metrics need to be aggregated? If they are doing complex analytics, what kind of metrics do they need for it? I recommend identifying a list of "needs", and prioritize them, so you can think about what dimensions need to be delivered first.
After that, research what you have closely. What does each disease data mart have? Does it have information about disease? taxonomy? patients who have that disease? procedures done for that disease? Identify the structure of the data marts, and make a list of attributes that can be derived from them.
After that, you might have a more fruitful conversation on the methods of integration.

How to store and use algorithms?

I have a Rails app that displays transportation prices of companies (think e.g. momondo.com).
Those companies are 'created' using the same data model for all of them. Every company has its unique way to calculate a price.
I have to implement different algorithms for every single one. In some cases an 'algorithm' could just be a lookup in a table, in other cases it's a math formula.
So, what kind of data model is the most appropriate here?
Thanks in advance
Whether it's a SQL query or a math formula, it would still be ruby code. So I'd suggest putting them in classes (you can afterwards decide if you declare these classes dynamically or not) with, in combination, a strategy pattern
I have an application that sounds a lot like yours (different domain). I ended up creating a Rule class that has a rule attribute that is a jsonb type. Then I created a rules engine (none of the Ruby rules engines fit my needs). So, I just select the appropriate rule (in my case, using a combination of organization and name since my organizations can have multiple rules) and then pass this to my rules engine for evaluation.
Currently, in my application, rules are defined in YAML files, but I'll be creating a front end so that organizations can use the UI to define their various rules.
I realize that's very high level, but hopefully it gives you a directional sense of how another person approached the problem.

Data Warehousing: Redundant combinations of dimensions

I have built my own, very basic data warehouse. In it I have very simple cubes, for example:
Fact: ReviewRatingByday
Dimensions: Review, Organization, Date
In the OLTP side of my application, an Organization has a 1 to many relationship with Reviews.
Currently my data warehouse provides my Fact's extract function with all possible combinations of the dimensions. This results in redundant combinations where a given Review is combined with an Organization, yet the Review is in fact associated with a different Organization.
How do other data warehouse systems avoid this?
Should I mirror my OLTP relationships in my Dimensions?
I don't really understand your question. If some combinations of Review and Organization do not exist in the source data, then you will have no rows for them in the fact table anyway. So where is the "redundant combination"?
I think you might be asking, "how do I show users only valid combinations of Review and Organization when they select their report criteria". If that's correct then you have two main options:
Use a reporting tool that is able to present only valid combinations to the user
Combine Review and Organization into a single dimension that contains all valid combinations of Review and Organization (Kimball's term for this is a mini-dimension)
If I misunderstood your question, please give some more information about exactly what your issue is, especially what you mean by "redundant combination".

collaborative filtering approach for tips/recommendations related to registered courses

I am looking at a specific problem where I need to build a recommender.
The generalized problem is as follows,
Each user has registered for (say) x courses (c1, c2, c3, .. cx)
Depending on each course, I need to provide (say) top 5 tips/recommendations to the user (e.g. study materials that could be useful etc)
I need collaborative elements to be applied to learn what recommendations are proving helpful to users.
I looked at the recommendation engines like Apache Mahout Taste, but I am unable to model my problem in a way that it looks like the examples shown. (The extra filtering criteria where a user is associated with one or more courses and each recommendation/tip could be associated with one or more courses is throwing me off.)
Please let me know if there is any good way of modeling such a problem? Any pointers to documentation/examples would be very appreciated.
I am just starting my research in this area so please bear with me if I have misunderstood any concepts.
Thanks,
Vivek
This may be too simple to need a recommender. If each course has a set of associated materials, then it seems clear that taking course c1 means they should have the associated materials for the course. Maybe rank from among all materials by popularity. That might be very easy and accomplish most of what you need.
If you want to model this as CF, you can; I don't know how much data you have. If you have just a handful of users and courses it will be too sparse to give useful answers.
Your users have relations to two things: courses and materials. You don't want to recommend courses, but rather materials. I would build two data models: one with user-course info, and one with user-material purchase info. Use the user-course data as the basis of a UserSimilarity implementation that defines user-user similarity. Then piece that together with a NearestNUserNeighborhood, a GenericUserBasedRecommender, but using the other user-material data model.
You will be using user-user similarity based on courses to make recommendations from among materials.

Can two data marts be entirely different from each other in spite of being (both) part of an organization?

In a text book, the above mentioned line is printed. But I don't agree with it. Because if we look from top to bottom or vice versa, each business component has single business goal (and in most cases "profit"). So somewhere these data marts belonging to two different branches or organisation have something in common "business goal".
Please help me understand the meaning of query and let me know if I am wrong at my interpretation .
In a complex organisation with different business units you will have data that is only relevant to the business unit. Even different types of insurance product (marine, property, public liability) have different information attached to them. Even if you have an enterprise-wide data warehouse you will still have reporting requirements that are specific to individual departments, even individual users.
Business-wide performance management systems (dashboards etc.) will tend to have a relatively narrow set of dimensional data and metrics common to all the business. It is quite reasonable to have a narrower set of business-wide performance metrics sliced by a higher level reporting hierarchy for company-wide reporting. Essentially this is what accounting systems do, although accounts data is by no means the be-all and end-all of management information.
A mature data warehouse system is likely to have a 'board pack', dashboard system or other MIS component where company-wide metrics are reported to senior management. This will be fairly narrow. Individual departments will have richer reporting on data that is specific to their operations, but may have little in common with other departments.
Yes.. This is possible.. Let's take an example of an organization with several Business Units.. Each Business Unit has its own characteristics and Key Performance Indicators.. Therefore, each data mart is distinct on its own.But a C Level executives would like to see the 360 degree of the organization's performance would like to see the target for the overall business goals. There will be the need to connect these datamarts in such cases.

Resources