gave another tip for storing the matrix using an adjacent table, coupled with many to many. that's just how it is implemented in classes django,
class Answer (models.Model): id_a = models.AutoField ('ID', primary_key = true) answer = models.TextField () class Simptoms (models.Model): id_s = models.AutoField ('ID', primary_key = true) simptom = models.TextField () class Answer_Simptoms (models.Model): id_a = models.ManyToManyField (Answer) id_s = models.ManyToManyField (Simptoms) But I think where I nakosyachil. although, in principle, what I should be. On 9 апр, 21:32, Bill Freeman <ke1g...@gmail.com> wrote: > Will there be more than one matrix? Or are you using "Name" to indicate > matrix membership, as opposed to column names and row names? If > so, a foreign key on a matrix table will be more storage efficient, since > matrix names will only need to be stored once. > > Also, doesn't a select to do a lookup of a data item always need to join > on all three tables? If you want to go this route, then you only really need > one table, though, if there are multiple named matrices, a second table > to hold the matrix name would be more efficient. > > Let's say, for the sake of argument, that are numbering your matrices, > rows, and columns, rather than naming them, and avoid the extra table(s) > and join(s). > > create table Data > ( > id int primary key, > matrix int not null, > row int not null, > col int not null, > data float not null > ) > > You can query this for an exact data item by specifying all of matrix, row, > and > col in your where clause. Or you can just specify matrix and row and get > all of a col (perhaps order by col) to get one row. Similar for > getting a column. > > In my initial scheme, the Data table items, which greatly outnumber any of > the other table's items, were slightly smaller each, having an id, a col int, > and a data (of whatever type). This has the cost that Data must be joined > on Row, in turn joined on Matrix if matrices have a name, and getting one > column is a more expensive operation (but still done in one where clause). > > The speed versus space tradoff is yours to make. > > Also, while it may be easier for you to think in terms of SQL, to wire this to > Django, you should probably write it as a model rather than as create > table SQL, so that you will see when you are going somewhere difficult. > > For my first scheme above (remember, id is automatic): > > class Data(models.Model): > matrix = models.IntegerField() > row = models.IntegerField() > col = models.IntegerField() > data = models.FloatField() > > Now you can, for instance, do something like: > > for d in Data.objects.filter(matrix=m, row=r).order_by('col'): > > to iterate over a row in order (leave off the order_by if order doesn't > matter), > and: > > d = Data.objects.get(matrix=m, row-r, col=c) > > to get an individual data object, which you can update using: > > d.data = new_value > d.save() > > use filter instead of get if you want to allow a matrix to be sparse. > > I'll leave the three (or two, if matrices are numbered) table scheme as > an exercise for you. > > Bill > > > > On Fri, Apr 9, 2010 at 3:50 AM, zimberlman <zimberl...@rambler.ru> wrote: > > create table Rows > > ( > > Id int primary key, > > Name text(255) not null > > ) > > create table Cols > > ( > > Id int primary key, > > Name text(255) not null > > ) > > > create table Data > > ( > > RowId int not null foreign key references Rows(Id), > > ColId int not null foreign key references Cols(Id), > > Data > > ) > > > On 8 апр, 02:32, Bill Freeman <ke1g...@gmail.com> wrote: > >> You need one matrix table, having a row for each matrix. > > >> You need one matrix_row table, having a row for each row of any matrix, > >> mostly > >> containing a foreign key on the matrix table, showing of which matrix the > >> row is > >> part, plus it's row number in that table. > > >> And you need one matrix_row_values table, having a foreign key on the > >> matrix_row, > >> indicating of which row it is a part, plus it's column number, and the > >> value. > > >> There is no run time table creation involved, and this can all be done > >> with direct > >> django models, and on any database the ORM supports (maybe not NoSQL > >> databases, I'll have to think about that). The access syntax wouldn't > >> look like > >> 2D array access, but you could fix that with a wrapper. > > >> On Wed, Apr 7, 2010 at 4:20 PM, zimberlman <zimberl...@rambler.ru> wrote: > >> > No, no. > >> > I need to store the matrix and dual array is ideal for this would come > >> > up. > >> > The problem is that the matrix will grow in size, thousands of entries > >> > only on i, and where that same number of j. > >> > create table is not an option. > > >> > only if the matrix transform and drive the table. and my question is, > >> > if you can not define arrays in the model, how can I convert a > >> > matrix. > >> > example is the matrix > >> > a b c d e > >> > 1 2 3 4 5 > >> > 11 22 33 44 55 > >> > converted into > >> > a 1 > >> > a 11 > >> > b 2 > >> > b 22 > >> > c 3 > >> > c 33 > >> > d 4 > >> > d 44 > >> > e 5 > >> > e 55 > > >> > this is for example, how do I implement this in the model? course in > >> > the class will have to use functions, but is it possible? > > >> > On 8 апр, 01:28, pmains <peter.ma...@gmail.com> wrote: > >> >> If there is no Django model field for this, then one option would be > >> >> to create your own model field (http://docs.djangoproject.com/en/dev/ > >> >> howto/custom-model-fields/). Of course, it would not be compatible > >> >> with most SQL Database types. > > >> >> Of course, it may be easier to just rethink your data model. Would it > >> >> be possible to create one or more additional tables to avoid using an > >> >> unusual DB construct like a 2D array? > > >> >> Could you explain the problem in a little more detail? Saying that you > >> >> want a 2-dimensional array is very abstract, but if we understand what > >> >> problem you are trying to solve, what data you are attempting to > >> >> model, it will be easier to give you useful suggestions. > > >> > double array that I want to keep count, it is ideally suited for the > >> > incidence matrix of the graph. > >> > required to store the connection to the knowledge base of question- > >> > answering system. > >> > which will lie on j IDs leading questions, and i will lie on > >> > identifiers answers emerging from a set of leading questions. > >> > and a double array is an ideal way to store data. > >> > but I probably need to write your own model of the array for django in > >> > this case, it is the only big problem at this time. > > >> > -- > >> > You received this message because you are subscribed to the Google > >> > Groups "Django users" group. > >> > To post to this group, send email to django-us...@googlegroups.com. > >> > To unsubscribe from this group, send email to > >> > django-users+unsubscr...@googlegroups.com. > >> > For more options, visit this group > >> > athttp://groups.google.com/group/django-users?hl=en. > > > -- > > You received this message because you are subscribed to the Google Groups > > "Django users" group. > > To post to this group, send email to django-us...@googlegroups.com. > > To unsubscribe from this group, send email to > > django-users+unsubscr...@googlegroups.com. > > For more options, visit this group > > athttp://groups.google.com/group/django-users?hl=en. -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.