source: main/eko-disco-specs/trunk/data.rst @ 10745

Last change on this file since 10745 was 10745, checked in by uli, 11 years ago

Fix some relation inconsistencies.

File size: 10.0 KB
Line 
1
2.. |n0| replace:: n\ :sub:`0`
3.. |m0| replace:: m\ :sub:`0`
4
5.. _label-data-entities:
6
7Data Entities
8=============
9
10These are the data entities the new system is supposed to model. Each
11of these entities should be addable, editable, and removable as
12covered in more detail in :ref:`label-use-cases`.
13
14For each entity we give a short description to tell what it means,
15what its purpose is and in what regards (and how) it should be handled
16by the system. Again the more detailed actions on these entities
17provided by the system are described in the :ref:`label-use-cases`
18section.
19
20The data entities are sorted alphabetically, not by importance or
21similar. Used description terms should link to other respective
22entities/terms where possible.
23
24Each data entitiy description provides a list of use cases and other
25data entities connected. Connections to other data entities contain a
26relationship telling how many instances of the described entity are
27connected to how many instances of the related entity.
28
29The following relation types may occur (in both directions):
30
31  - 1:1 (one on one)
32  - n:1 (many on one)
33  - n:m (many on many)
34  - p:1 (many or none on one)
35  - p:q (many or none on many or none)
36  - p:n (many or none on many)
37  - b:1 (one or none on one)
38
39with
40
41  - n, m element of {1, 2, ...},
42  - p, q element of {0, 1, 2, ...}
43  - b element of {0, 1}
44
45Examples:
46
471:p service-contract relation means that each service
48offered can result in various contracts, but each contract is
49only based on one service.
50
51p:q user-userrole relation means that each user can have no role or
52several roles and each role can be assigned to no user or several users.
53
54Relations can always be read in two directions.
55
56.. _label-contact-address:
57
58Contact Address
59---------------
60
61A postal address.
62
63Connected to: :ref:`label-contact-data` (p:1)
64
65Used in the following use cases:
66
67
68.. _label-contact-data:
69
70Contact Data
71------------
72
73The data neccessary to contact some :ref:`label-customer`, staff
74person or similar entity. Contact data might contain several
75addresses, phone numbers, emails, etc.
76
77Connected to: :ref:`label-customer` (1:1),
78:ref:`label-contact-address` (1:p), :ref:`label-contact-email`
79(1:n), :ref:`label-contact-phone` (1:p)
80
81Used in the following use cases:
82
83
84.. _label-contact-email:
85
86Contact Email
87-------------
88
89An email address with optional additional clear name. For email
90addresses we store some timestamp that indicates when the respective
91email address was last checked successfully (thus marking it a 'valid'
92one). No timestamp means, the email address has never been checked.
93
94Connected to: :ref:`label-contact-data` (n:1),
95:ref:`label-timestamp` (1:q)
96
97Used in the following use cases:
98
99
100.. _label-contact-phone:
101
102Contact Phone
103-------------
104
105Mobile phone number which is capable of receiving sms text messages.
106
107Connected to: :ref:`label-contact-data` (p:1)
108
109Used in the following use cases:
110
111
112.. _label-contract:
113
114Contract
115--------
116
117A contract is created whenever a :ref:`label-customer` orders some
118:ref:`label-service` from the system. It is always connected to a
119:ref:`label-customer` and a :ref:`label-service` .
120
121A contract is not necessarily written on paper and signed by
122people. Instead it is an abstraction used inside the system.
123
124It is always created from a :ref:`label-service`, which tells about
125the basic data, with additional parameters set that depend on the type
126of :ref:`label-service` ordered.
127
128Contracts can trigger :ref:`label-transaction`\ s. For instance if some
129:ref:`label-customer` orders a service. When the service charges
130become due, a respective :ref:`label-transaction` is triggered.
131
132Contracts can have multiple :ref:`label-contract-addon`\ s.
133
134Connected to: :ref:`label-service` (p:1), :ref:`label-customer` (p:1),
135:ref:`label-contract-addon` (1:p), :ref:`label-transaction` (1:p),
136:ref:`label-meter` (1:b)
137
138Used in the following use cases:
139
140
141.. _label-contract-addon:
142
143Contract Addon
144--------------
145
146Kind of 'sub contract' that always belongs to some already existing
147:ref:`label-contract` but comes with an own set of
148parameters. Contract addons are created by :ref:`label-contract`\ s.
149
150Connected to: :ref:`label-contract` (p:1),
151:ref:`label-service` (p:1), :ref:`label-customer` (p:1),
152:ref:`label-transaction` (1:p)
153
154
155.. _label-customer:
156
157Customer
158--------
159
160Beneficiary of one or more :ref:`label-contract`\ s.
161
162Customers are added to the system by initial import (migration phase),
163being created by staff or can self-register themselves to the system.
164
165Customers have to provide :ref:`label-contact-data` and get
166:ref:`label-login-credentials` to login to the system.
167
168Once logged in, customers get a 'My Eko-Disco' page where they can
169
170- see their current orders
171
172- watch their consumption
173
174- order more services
175
176- handle contractual problems
177
178- get help if problems arise
179
180- retrieve bills
181
182- change their passwords
183
184Customers can order :ref:`label-service`\ s and pay these (kinds of
185payment depend on the type of service/good ordered and the available
186payment methods).
187
188Customers and their data can be managed by customers themselves (for
189instance when postal addresses change), and by staff members.
190
191Connected to: :ref:`label-contract` (1:p),
192:ref:`label-contact-data` (1:1), :ref:`label-login-credentials` (1:1)
193
194
195.. _label-location:
196
197Location
198--------
199
200A real-world location. Used for instance for meters to store
201information about their place. The location of a meter does not necessarily
202correspond with one of the :ref:`label-contact-address`\ es.
203Locations can either be less formal, for instance describing a location
204in words, or very precise by using GPS data.
205
206Connected to: :ref:`label-meter` (1:p)
207
208
209.. _label-login-credentials:
210
211Login Credentials
212-----------------
213
214A set of username/password assigned to system users. Passwords are
215stored inside the system using strong cryptographic hash functions.
216
217Passwords can be reset on request.
218
219Connected to: :ref:`label-customer` (1:1)
220
221
222.. _label-meter:
223
224Meter
225-----
226
227A meter measures power consumption. It has a place where it is
228installed and might be connected to one or several contracts. For a
229given time a meter can be connected to one or zero contracts.
230
231Each meter has to provide a :ref:`label-location` that tells, where it
232is installed.
233
234Meters also contain a history of meter values
235(:ref:`label-meter-value`), which is basically a list of meter values
236at a given time.
237
238Connected to: :ref:`label-contract` (b:1),
239:ref:`label-meter-value` (1:n), :ref:`label-location` (p:1)
240
241
242.. _label-meter-value:
243
244Meter Value
245-----------
246
247The value of a :ref:`label-meter` at a certain point in time
248(providing a :ref:`label-timestamp`) authorized by some
249:ref:`label-user` or device.
250
251It serves mainly for computing power consumption of
252:ref:`label-customer`\ s.
253
254When a new meter value is added to the system (the respective
255:ref:`label-meter` is 'updated'), the system also registers how the
256the new value was entered, i.e. by whom and when.
257
258The system will be prepared to collect meter values in two ways:
259
260a) (push-method): by being fed with respective data by authorized
261   users (staff members)
262
263b) (pull-method): by polling dedicated hardware that provides the
264   neccessary interface (automatic remote-reading).
265
266The second choice requires appropriate hardware to be in place, which
267in detail is not part of this specs. The system will, however, be
268prepared to collect meter data from external devices.
269
270Connected to: :ref:`label-meter` (n:1), :ref:`label-timestamp` (1:1),
271:ref:`label-user` (p:1)
272
273
274.. _label-report:
275
276Report
277------
278
279Administrative report or list to give overviews over current state of
280business. Includes lists of customers sorted by various categories
281(type of contract, amount of fees paid, etc.), lists of services
282sorted by various categories, etc.
283
284Reports are generated as PDF documents and are available for download
285by authorized :ref:`label-user`\ s.
286
287Connected to: (almost everything else)
288
289
290.. _label-service:
291
292Service
293-------
294
295The system will provide different services to
296:ref:`label-customer`\ s. These can have arbitrary forms, including
297one-time services (like installation of meters) and open-ended
298long-time services (like delivering power based on contract). Services
299are managable by staff like goods offered in a shop.
300
301Services define the conditions under which they can be ordered by
302:ref:`label-customer`\ s, including prices, runtimes, etc.
303
304Services also serve as factories for :ref:`label-contract`\ s.
305
306Connected to: :ref:`label-contract` (1:p)
307
308Used in the following use cases:
309
310
311.. _label-timestamp:
312
313Timestamp
314---------
315
316A timestamp can be a calendar date or a calendar date plus some day
317time.
318
319The system will internally use UTC-based timestamps only to minimize
320ambiguities. In menus, frontends, etc. timestamps are displayed in
321local Lagos time.
322
323Connected to: :ref:`label-meter-value` (1:1),
324:ref:`label-contact-email` (p:1)
325
326
327.. _label-transaction:
328
329Transaction
330-----------
331
332A transaction is some business-relevant action taken. A transaction
333means basically, that something happened, that leads to increased or
334decreased customer accounts. Normally this is something like a
335payment, some service order or similar.
336
337Transactions do always belong to one certain customer account. They
338also contain some amount of money which is thereby transfered to or
339from a customer's account. They also always reference a service which
340is consumed, purchased, or (pre-)paid by the respective customer.
341
342Connected to: :ref:`label-customer` (p:1), :ref:`label-service`
343(p:1), :ref:`label-contract` (p:1)
344
345Used in the following use cases:
346
347
348.. _label-user:
349
350User
351----
352
353A system user.
354
355Users can have :ref:`label-user-role`\ s managed by the
356system. Real-world staff members and customers are different to the
357system as they will have different roles. Also anonymous users are
358accepted by the system to provide marketing pages, service offers,
359etc.
360
361Each user has one set of :ref:`label-login-credentials` to authenticate
362against the system.
363
364Users can be blocked or removed from the system.
365
366Connected to: :ref:`label-login-credentials` (1:1),
367:ref:`label-user-role` (p:q)
368
369
370.. _label-user-role:
371
372User Role
373---------
374
375A role assigned to a group of :ref:`label-user`\ s.
376
377Connected to: :ref:`label-user` (p:q)
378
Note: See TracBrowser for help on using the repository browser.